IT TIP

WCF 웹 서비스 오류 : ASP.NET 호환성을 지원하지 않으므로 서비스를 활성화 할 수 없습니다.

itqueen 2021. 1. 9. 11:11
반응형

WCF 웹 서비스 오류 : ASP.NET 호환성을 지원하지 않으므로 서비스를 활성화 할 수 없습니다.


편안한 wcf 웹 서비스를 만들려고합니다. 클라이언트를 통해 서비스에 연결하려고하면 다음 오류가 발생합니다.

ASP.NET 호환성을 지원하지 않기 때문에 서비스를 활성화 할 수 없습니다. 이 응용 프로그램에 대해 ASP.NET 호환성이 활성화됩니다. web.config에서 ASP.NET 호환성 모드를 끄거나 RequirementsMode 설정이 '허용'또는 '필수'인 서비스 유형에 AspNetCompatibilityRequirements 특성을 추가합니다.

다른 사람들은 문제가 있었지만 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>

주 서비스에서 서비스를 다음과 같이 표시 할 수 있습니다.

[AspNetCompatibilityRequirements(
        RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

에서 http://forums.silverlight.net/t/21944.aspx


it will work :

you have change this lines in code or add the line in web.config:

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

If someone has a lot of services and services are created using custom ServiceHostFactory, then AspNetCompatibilityRequirementsAttribute can also be set in CreateServiceHost method.

Example:

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;
    }
}

Actually, as per the latest documentation you need to do 2 things,

1.For your service class:

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

2.For web.config

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

ReferenceURL : https://stackoverflow.com/questions/11904202/wcf-web-service-error-the-service-cannot-be-activated-because-it-does-not-suppo

반응형