zoukankan      html  css  js  c++  java
  • Dynamic Set Up the Web Reference Url To WebService

    如何根据不同环境配置相关的WebService地址?

    我想在开发时大家经常会遇到此类的问题,你们一般处理是怎样的。

    一般操作恐怕就是

    根据不同环境的对WebService的WebReferenceUrl

    1.手工更新

    2.删除现有的Reference,然后进行再次引用新的Ref Url

    3.etc..

    这样的话,有一处不是非常方便,就是需要人工每次进行干预。

    我现在的思路:

       针对WebService的WebReferenceURL进行配置化,来适合不同环境的所需。

    嗯,下面针对项目实际场景进行演示

    在服务层

    • ADD WebRefence
    • URL Behavior从Static选成Dynamic
    image 
      
    • 增加动态获取配置的WebService Url的方法(只要加载到调用WebService的地方,即可)
        /// <summary>
        /// 服务实例单例类
        /// </summary>
        public partial class ServiceInstance {

            /// <summary>
            /// PMS-ICRS
            /// </summary>
            /// <returns></returns>
            private static ICrs icrsInstance;
            public static ICrs ICrsService {
                get {
                    if ( icrsInstance == null ) {
                        GetUrlInAppConfig ( "ICrs" , "WebServiceUrl" ); <--如果不添加此语句,即WebService地址为当初默认添加的地址
                        icrsInstance = new ICrs ();
                    }
                    return icrsInstance;
                }
            }
      /// <summary>
            /// 动态获取配置的WebService Url
            /// </summary>
            /// <param name="propertyName">属性名称</param>
            /// <param name="appName">AppSetting配置Key名称</param>
            internal static void GetUrlInAppConfig (string propertyName , string appName) {
                Settings.Default.Properties[propertyName].DefaultValue = ConfigurationManager.AppSettings[appName].ToString ();
                Settings.Default.Save ();
                Settings.Default.Reload ();
         }
        }
    • 在表现层的Config的AppSetting处增加相关配置
      <!--WebService Url-->
      <add key="WebServiceUrl" value="http://XXXXXXXXXXXXXXX.asmx"/>
    测试代码:
      public class WebService {



             private ICrs pmsWs;

             /// <summary>
             /// 获取ICrsService实例
             /// </summary>
             public WebService () {
                 pmsWs = ServiceInstance.ICrsService;
             }
            }
    }
    UI
    public class UI{
            public void InvokeWS(){
                var target = new WebService ();  <--此语句执行完之后,地址为:WebServiceUrl--即配置地址
                string ID = "2011032";

                string checkIn = "2010-07-12";
                string checkOut = "2010-07-13";
                var actual = target.GET( checkIn , checkOut , hotelID );
           }
     }
    END

    资料:

    http://www.codeproject.com/KB/XML/wsdldynamicurl.aspx

  • 相关阅读:
    主进程与渲染进程的异同
    Electron node integration enabled 设置
    JS-函数总结
    JS-变量、作用域、垃圾回收机制总结
    python进阶知识笔记
    高级抽象函数
    mac支持的文件系统
    生成器generator & 迭代器iterator
    磁盘如何做才能让系统识别
    winPE盘能做什么
  • 原文地址:https://www.cnblogs.com/RuiLei/p/1775888.html
Copyright © 2011-2022 走看看