首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WCF web服务错误:无法激活该服务,因为它不支持ASP.NET兼容性

WCF web服务错误:无法激活该服务,因为它不支持ASP.NET兼容性
EN

Stack Overflow用户
提问于 2012-08-10 22:52:40
回答 4查看 84.8K关注 0票数 55

我正在尝试创建一个create风格的wcf web服务。当我尝试通过客户端连接到服务时,我得到以下错误:

无法激活该服务,因为它不支持ASP.NET兼容性。已为此应用程序启用ASP.NET兼容性。在web.config中关闭ASP.NET兼容模式,或将AspNetCompatibilityRequirements属性添加到服务类型,并将RequirementsMode设置为“Allowed”或“Required”。

其他人也有问题,但他们通过更改web.config解决了这个问题。我已经实现了他们的修复,但问题仍然存在。这是我的web.config:

代码语言:javascript
复制
<system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="WebBehavior" >
           <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="MyServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="MyServiceBehavior" name="myfirstwcf">
        <endpoint address="ws" binding="basicHttpBinding" 
                  contract="Imyfirstwcf" />
        <endpoint address="ws2" binding="wsHttpBinding" 
                  contract="Imyfirstwcf" />
        <endpoint address="" behaviorConfiguration="WebBehavior" 
                  binding="webHttpBinding" 
                  contract="Imyfirstwcf" />
        <endpoint address="mex" binding="mexHttpBinding" 
                  contract="IMetadataExchange" />
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled= "true"
      multipleSiteBindingsEnabled="true"  />
  </system.serviceModel>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-10 23:02:16

在您的主服务上,您可以将您的服务标记为:

代码语言:javascript
复制
[AspNetCompatibilityRequirements(
        RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

来自http://forums.silverlight.net/t/21944.aspx

票数 109
EN

Stack Overflow用户

发布于 2014-04-22 19:01:36

它将会起作用:

您已经在代码中更改了以下行,或者在web.config中添加了这一行:

代码语言:javascript
复制
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" /> 
</system.serviceModel>
票数 56
EN

Stack Overflow用户

发布于 2016-09-19 20:14:23

如果某人有很多服务,并且服务是使用自定义ServiceHostFactory创建的,那么也可以在CreateServiceHost方法中设置AspNetCompatibilityRequirementsAttribute

示例:

代码语言:javascript
复制
public class HostFactory : ServiceHostFactory
{
    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        var host = new ServiceHost(serviceType, baseAddresses);
        //other relevent code to configure host's end point etc
        if (host.Description.Behaviors.Contains(typeof(AspNetCompatibilityRequirementsAttribute)))
        {
            var compatibilityRequirementsAttribute = host.Description.Behaviors[typeof(AspNetCompatibilityRequirementsAttribute)] as AspNetCompatibilityRequirementsAttribute;
            compatibilityRequirementsAttribute.RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed;
        }
        else
        {
            host.Description.Behaviors.Add(new AspNetCompatibilityRequirementsAttribute() { RequirementsMode =AspNetCompatibilityRequirementsMode.Allowed});
        }
        return host;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11904202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档