今天就跟大家聊聊有关怎样解决相关WCF Service事件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
昨天到今天搞了一整天的WCF Service,我都快崩溃了! ,以后再也不能随便的关机了,因为这次的不小心,几乎所有的Net安装,调试问题都被我碰到了,还好,我一个个把他记录下来了,同时,在相关论坛上找了一些相关的解决办法,分享一下,供大家相互学习交流。
我有一个寄宿在ASP.NET站点中的WCF Service,物理路径形如“/MyService/Service.svc”。现在,我希望将形如“http://localhost/beta/MyService/Service.svc”这样的URL重写到“~/MyService/Service.svc?ver=beta”。
第一步遇到的问题:
按照常理,应该在HttpApplication的PostAuthenticateRequest事件中做重写。可对于.svc的请求,根本就不会触发这个事件。于是只好改在BeginRequest事件中做重写。
第二步遇到的问题:
在BeginRequest中进行重写后,通过http://localhost/beta/MyService/Service.svc这样的路径虽然可以正确访问到我的Service,但通过IE浏览其helper页,得到的wsdl地址却是http://localhost/MyService/Service.svc?wsdl,这导致我的代码因为无法识别版本号而出错。
同样,在另外一个测试项目中添加服务引用,也会因为我的代码出错而无法添加引用,希望大家能给出在WCF中使用URL重写的方案。
前面的示例中没有使用消息合同规范。如果使用消息合同,就应定义一个表示消息的类,再给类应用MessageContractAttribute属性。接着给这个类的成员应用Message Body MemberAttribute、MessageHeaderAttribute或MessageHeaderArrayAttribute属性。所有这些属性都在System. ServieceModel名称空间中。如果要高度控制WCF服务使用的SOAP消息,就不要使用消息合同,所以这里不详细讨论它。
如果客户应用程序可以使用特定的异常类型,如定制异常,就可以给可能生成该异常的操作应用System.ServieceModel.FaultContractAttribute属性。在最初使用WCF时不希望这么做。
看完上述内容,你们对怎样解决相关WCF Service事件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。