当前位置: 首页 > 编程语言 > C#

为什么AspNetCompatibilityRequirementsMode.Allowed修复了这个错误?分享

时间:2023-04-10 13:15:29 C#

为什么AspNetCompatibilityRequirementsMode.Allowed修复了这个错误?我正在寻找解决WCF问题的方法。我对WCF很陌生,所以我不确定到底发生了什么。我正在使用VisualStudio2010并执行新网站->WCF服务。如果我设置了aspNetCompatibilityEnabled="true",我创建了我的服务并在配置文件中通过我的网络浏览器访问该服务时出现此错误。无法激活该服务,因为它不支持ASP.NET兼容性。此应用程序启用了ASP.NET兼容性。在web.config中关闭ASP.NET兼容模式,或将AspNetCompatibilityRequirements属性添加到服务类型,并将RequirementsMode设置为“允许”或“必需”。我不明白那是什么意思。为什么aspNetCompatibilityEnabled="true"在[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]修复它时会导致此错误。对我来说,他们听起来像是在做同样的事情。此外,没有该属性,silverlight无法调用我的WCF方法。这是为什么?如有必要,这是我的配置文件:所以我的问题是,为什么添加Compatibility属性可以解决这个问题?另外,为什么silverlight必须要有它?当您在配置文件中将aspNetCompatibilityEnabled设置为true时,表示您的服务将参与ASP.NET管道;因此可以使用诸如ASP.NET会话之类的项目。如果是这种情况,您需要适当地装饰您的服务,因为ASP.NET兼容模式默认设置为false。因此,通过使用AllowedRequirementsMode装饰您的服务实现,您可以说是一个令人满意的中间立场,基本上是说您的服务不关心aspNetCompatibility模式是什么(真或假)。如果你的RequirementsMode是Required,那么你需要将配置aspNetCompatibilityEnabled设置为true;如果您的RequirementsMode设置为NotAllowed,则执行相反的操作。(如果您使用允许的RequirementsMode的中途点,您可以通过检查静态ServiceHostingEnvironment.AspNetCompatibilityEnabled属性来检查服务实现是否启用了aspNetCompatibilityEnabled。)Silverlight必须依赖ASP.NET管道(我不是Silverlight开发人员),这就是为什么您需要在您的配置和服务中启用此兼容模式,以便您的Silverlight应用程序调用它们。在此处查看MSDN上的文档。要知道的是,如果您不需要ASP.NET管道好东西,那么您不需要装饰您的服务或在您的配置中设置aspNetCompatibilityEnabled设置(默认情况下它们是关闭的)。以上是C#学习教程:AspNetCompatibilityRequirementsMode.Allowed为什么会修复这个错误?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: