webentwicklung-frage-antwort-db.com.de

WCF-Webdienstfehler: Der Dienst kann nicht aktiviert werden, da er keine ASP.NET-Kompatibilität unterstützt

Ich versuche, einen ruhigen wcf-Webservice zu erstellen. Wenn ich versuche, über den Client eine Verbindung zum Dienst herzustellen, wird die folgende Fehlermeldung angezeigt:

Der Dienst kann nicht aktiviert werden, da er keine ASP.NET-Kompatibilität unterstützt. Die ASP.NET-Kompatibilität ist für diese Anwendung aktiviert. Deaktivieren Sie den ASP.NET-Kompatibilitätsmodus in der Datei web.config, oder fügen Sie das Attribut AspNetCompatibilityRequirements zu dem Servicetyp mit der Einstellung RequirementsMode als "Zulässig" oder "Erforderlich" hinzu.

Andere hatten Probleme, die jedoch durch Änderungen an ihrer web.config behoben wurden. Ich habe ihren Fix implementiert, aber das Problem besteht immer noch. hier ist meine 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>
51
user1186651

In Ihrem Hauptservice können Sie Ihren Service folgendermaßen kennzeichnen:

[AspNetCompatibilityRequirements(
        RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

Von http://forums.silverlight.net/t/21944.aspx

100
Waqar Janjua

es wird klappen :

sie haben diese Codezeile geändert oder die Zeile in web.config eingefügt:

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

Wenn für jemanden viele Services erstellt wurden und Services mit der benutzerdefinierten ServiceHostFactory erstellt werden, kann AspNetCompatibilityRequirementsAttribute auch in der CreateServiceHost-Methode festgelegt werden.

Beispiel:

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

Nach der neuesten Dokumentation müssen Sie zwei Dinge tun,

1.Für Ihre Serviceklasse:

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

2. Für web.config

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