h成人,灌篮高手全国大赛篇,贱妇当自强
作为默认设置,每次web服务器配置切换,开发人员不得不手动修改wcf服务配置,silverlight应用无法完全依赖于servicereference.clientconfig配置。这样不仅增加了维护成本,而且为代码维护添加难度。
首先在项目中添加wcf服务,silverlight 默认生成servicereference.clientconfig文件,从配置文件中可以看出,endpoint都是指向本地。
<configuration>
<system.servicemodel>
<bindings>
<basichttpbinding>
<binding name="basichttpbinding_proxyservice" maxbuffersize="2147483647" maxreceivedmessagesize="2147483647">
<security mode="none" />
</binding>
<binding name="basichttpbinding_widgetservice" maxbuffersize="2147483647" maxreceivedmessagesize="2147483647">
<security mode="none" />
</binding>
</basichttpbinding>
</bindings>
<client>
<endpoint address="http://localhost/wcftest/proxy.s" binding="basichttpbinding" bindingconfiguration="basichttpbinding_proxyservice" contract="wcftestproxy.proxyservice" name="basichttpbinding_proxyservice" />
<endpoint address="http://localhost/wcftest/widget.svc" binding="basichttpbinding" bindingconfiguration="basichttpbinding_widgetservice" contract="wcftestwidgetservice.widgetservice" name="basichttpbinding_widgetservice" />
</client>
</system.servicemodel>
</configuration>
为了实现动态设置endpoint,下面将创建一个辅助类dynamicendpointhelper,
public class dynamicendpointhelper { // baseurl是部署服务的web服务器地址
private const string baseurl = "http://localhost/wcftest/"; public static string resolveendpointurl(string endpointurl, string xappath) { string baseurl = xappath.substring(0, xappath.indexof("clientbin")); string relativeendpointurl = endpointurl.substring(baseurl.length); string dynamicendpointurl = baseurl + relativeendpointurl; return dynamicendpointurl; } }
而在silverlight客户端,可以通过后台代码实现动态设置endpoint,
private wcftestproxy.proxyserviceclient getproxyservice() { wcftestproxy.proxyserviceclient service = new wcftestproxy.proxyserviceclient(); service.endpoint.address = new endpointaddress( dynamicendpointhelper.resolveendpointurl(service.endpoint.address.uri.tostring(), app.current.host.source.tostring())); return service; }
在创建完成代理客户端服务后,endpoint地址将指向当前运行的web地址。值得注意的是,该方法仅能支持应用与服务在相同域中,如果服务在不同的域中,必须进行跨域设置才能完成动态设置。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论