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
- 增加动态获取配置的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
资料:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2006-07-12 工作之余的搞笑贴