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

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

一般操作恐怕就是

根据不同环境的对WebService的WebReferenceUrl

1.手工更新

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

3.etc..

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

我现在的思路:

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

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

在服务层

  • ADD WebRefence
  • URL Behavior从Static选成Dynamic
   
  • 增加动态获取配置的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

转载于:https://www.cnblogs.com/RuiLei/archive/2010/07/12/1775888.html

Dynamic Set Up the Web Reference Url To WebService相关推荐

  1. VS2008中Web Reference和Service Reference的区别

    很早就发现在vs2008中应用web service有两种方式,即Add Web Reference和Add Service Reference,但是一直不是很清楚这两者有什么区别.趁着今天有空实验一 ...

  2. 【转】Web Reference和Service Reference的区别

    今天因为项目需要使用服务引用,就按之前的经验添加上了,步骤如下: 项目根目录--引用--右键--添加服务引用--高级--添加Web引用--输入接口的URL地址--回车(下方出现的就是接口的定义的方法) ...

  3. Web Reference和Service Reference的区别

    今天因为项目需要使用服务引用,就按之前的经验添加上了,步骤如下:  项目根目录--引用--右键--添加服务引用--高级--添加Web引用--输入接口的URL地址--回车(下方出现的就是接口的定义的方法 ...

  4. 怎么实现Web系统URL传输(表单提交)参数加密-zhuan

    using System; using System.Security.Cryptography; using System.IO; using System.Text; namespace EIP. ...

  5. zabbix添加对web页面url的状态监控

    zabbix3.0.4添加对web页面url的状态监控 1.应用集配置  在配置->主机中打开主机列表,选择需要添加监控主机的web,创建应用集 2.web监测配置 选择web场景,再单击右上角 ...

  6. 获得Web目录URL

    获得Web目录URL string strRoot = String.Format("http://{0}{1}",Request.Url.Host,Request.Applica ...

  7. Django基础-Web框架-URL路由

    Django基础-Web框架-URL路由 一.Django基础–Web框架 MVC和MTV框架 MVC 把Web应用分为模型(M).视图(V).控制器(C)三层,他们之间以一种插件式的,松耦合的方式联 ...

  8. JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址

    2019独角兽企业重金招聘Python工程师标准>>> 在写Java程序时不可避免要获取文件的路径...总结一下,遗漏的随时补上 1.可以在servlet的init方法里 Strin ...

  9. [Web 开发] URL 的最大长度

    Web开发的常见问题: "URL 的最大长度是多少?"  答案是: HTTP协议标准并没有规定URL的最大长度. RFC文档: http://www.w3.org/Protocol ...

  10. zabbix系列(八)zabbix添加对web页面url的状态监控

    通过zabbi做web监控不仅仅可以监控到站点的响应时间,还可以根据站点返回的状态码,或者响应时间做报警 1.对需要监控的主机添加web监控   在configuration-hosts 中打开主机列 ...

最新文章

  1. 2020 年,让 OKR 助力你稳住 flag 清单!
  2. iis应用程序池不能启动
  3. 网络安全 / crt、pem、pfx、cer、key 作用及区别
  4. hadoop 写入mysql_使用MapReducer将文件写入mysql 数据库
  5. GetAdaptersInfo获取MAC地址
  6. Minify框架分析,主要功能类简介
  7. CSDN的MarkDown编辑器插入图片时调整大小
  8. mysql 配置多个数据库连接_SpringBoot多数据库连接(mysql+oracle)
  9. mysql grant show_【汇总】mysql常用操作【grant,show】
  10. Swift 5用Template自动创建VIPER架构代码
  11. update set命令用来修改表中的数据
  12. 详解缠中说禅走势中枢
  13. python倒计时弹框提示带注释_注意时间用python制作倒计时提醒工具
  14. QT遍历 Json 根节点
  15. Spring中AOP的实现原理
  16. https://blog.csdn.net/Darryl_Tang/article/details/80545688
  17. WSL和双系统Ubuntu的CPU性能差异
  18. 靶机渗透日记 noob
  19. 走进JavaWeb技术世界9:Java日志系统的诞生与发展
  20. 【IMWeb训练营作业】- 作业3:仿readhub.me

热门文章

  1. CUDA的内存泄露问题及解决办法
  2. 构建与服务器的JDK版本不同,导致服务器不能工作
  3. 初探socket 报式
  4. board crt_容器编排系统K8s之Dashboard部署
  5. windows dll 学习
  6. python的raw_对于Python中RawString的理解(引用)
  7. 基于linux的进程调度模拟程序,2011180021_Linux操作系统_课程设计报告_基于Linux的进程调度模拟程序...
  8. python transform hive_Hive使用TRANSFORM运行Python脚本总结
  9. sql server 用户创建与权限管理
  10. 阿里云数据传输服务低价不低质,服务再升级 1