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

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

概述我在Web应用程序(IIS)中托管了一个WCF服务.我需要通过wsHttp暴露1个终点,通过netTcp暴露另外一个终点.我在一个IIS7环境中,使我有可能托管非基于HTTP的服务.无论如何,当我使用浏览器浏览.svc文件时,我得到错误: The service cannot be activated because it does not support ASP.NET compatibilit 我在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.

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

总结

以上是内存溢出为你收集整理的.net – WCF托管在Web应用程序和兼容性模式下全部内容,希望文章能够帮你解决.net – WCF托管在Web应用程序和兼容性模式下所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1094125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存