微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.net – WCF托管在Web应用程序和兼容性模式下

我在Web应用程序(IIS)中托管了一个WCF服务.我需要通过wsHttp暴露1个终点,通过netTcp暴露另外一个终点.我在一个IIS7环境中,使我有可能托管非基于HTTP的服务.无论如何,当我使用浏览器浏览.svc文件时,我得到错误

The service cannot be activated because it does not support ASP.NET
compatibility. ASP.NET compatibility is enabled for this application

通过谷歌搜索,我意识到WCF运行在两种模式 – 混合和ASP.NET兼容.当我应用属性

[AspNetCompatibilityRequirements(
       RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

但是,一旦将此属性应用于服务契约实现,我就不能使用非HTTP绑定.

如何设置,以便:

>我可以支持非HTTP端点
>我可以在Web应用程序上托管该服务
>我不创建多个服务,一个打开了aspnet兼容,另一个关闭

解决方法

这里有很多事情.首先,除非您实际上正在使用ASP.net功能,否则不应使用兼容性模式.要关闭它,请遵循Kirk的建议,并从您的代码删除此行:
[AspNetCompatibilityRequirements(
       RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

只有托管HTTP服务不需要兼容性模式,只有您希望使用不在WCF中的ASP.net功能(或者需要在不更改其他代码的情况下将旧的asmx服务端口连接到WCF).

第二个问题是使用IIS托管一个非HTTP绑定.这仅适用于IIS 7,并且仅使用WAS. ASP.net兼容性不适用于非HTTP绑定,因为ASP.net需要HTTP.

所以只要启用兼容性模式,你所要做的就是不可能的.删除它,然后事情应该工作.

原文地址:https://www.jb51.cc/html/229357.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐