web-dev-qa-db-ja.com

WCF Webサービスエラー:ASP.NET互換性をサポートしていないため、サービスをアクティブにできません

安らかなWCF Webサービスを作成しようとしています。クライアントを介してサービスに接続しようとすると、次のエラーが表示されます。

ASP.NET互換性をサポートしていないため、サービスをアクティブにできません。このアプリケーションでASP.NET互換性が有効になっています。web.configでASP.NET互換性モードをオフにするか、AspNetCompatibilityRequirements属性をサービスタイプに追加しますRequirementsModeを「Allowed」または「Required」に設定してください。

他にも問題がありましたが、web.configを変更することで修正しました。私はそれらの修正を実装しましたが、それでも問題は存在します。ここに私のweb.configがあります:

<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>
53
user1186651

メインサービスで、サービスを次のようにマークできます。

[AspNetCompatibilityRequirements(
        RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

から http://forums.silverlight.net/t/21944.aspx

103
Waqar Janjua

それが動作します :

コードで次の行を変更するか、web.configに次の行を追加します。

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" /> 
</system.serviceModel>
53
Arun joseph

誰かが多くのサービスを持ち、カスタムServiceHostFactoryを使用してサービスが作成される場合、AspNetCompatibilityRequirementsAttributeメソッドでCreateServiceHostを設定することもできます。

例:

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
Abdul Rauf

実際、最新のドキュメントによると、2つのことを行う必要があります。

1.サービスクラスの場合:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(Namespace = "url")]
public class Service : IService
{
}

2. web.configの場合

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
0
Sameer