Ошибка AspNetCompatibilityRequirement при размещении службы WCF с конечной точкой AppFabric в SharePoint 2010 - PullRequest
2 голосов
/ 01 декабря 2010

Я пытаюсь разместить службу WCF в SharePoint 2010 с конечной точкой AppFabric. Я использую BasicHttpRelayBinding. Когда я размещаю службу со стандартной конечной точкой, используя basicHttpBinding (не конечную точку служебной шины), служба работает нормально. Однако, как только я добавляю конечную точку, используя basicHttpRelayBinding, я получаю следующую ошибку в журнале событий, и служба не регистрируется на служебной шине.

WebHost не смог обработать запрос. Информация об отправителе: System.ServiceModel.Activation.HostedHttpRequestAsyncResult / 58154627 Исключение: System.ServiceModel.ServiceActivationException: служба '/_vti_bin/FirstServiceFarmSolution/ListAccessService.svc' не может быть активирована из-за исключения во время компиляции. Сообщение об исключении: ChannelDispatcher в 'sb: //cliffwahl-trial.servicebus.windows.net/ListAccessService' с контрактом (ами) "IListAccessService" "не может открыть свой IChannelListener .. ---> System.InvalidOperationException : ChannelDispatcher в 'sb: //cliffwahl-trial.servicebus.windows.net/ListAccessService' с контрактом (-ами) "IListAccessService" "не может открыть свой IChannelListener. ---> System.InvalidOperationException: службу нельзя активировать, поскольку она не поддерживает совместимость с ASP.NET. Совместимость ASP.NET включена для этого приложения. Отключите режим совместимости ASP.NET в web.config или добавьте атрибут AspNetCompatibilityRequirements к типу службы с параметром RequirementsMode «Разрешено» или «Обязательно». в System.ServiceModel.Activation.AspNetCompatibilityRequirementsAttribute.System.ServiceModel.Description.IServiceBehavior.Validate (описание ServiceDescription, ServiceHostBase serviceHostBase)

Я пробовал ws2007HttpRelayBinding и netTcpRelayBinding с одинаковым поведением.

Вот соответствующие части кода:

[ServiceContract]
public interface IListAccessService
{
    [OperationContract]
    List<Lead> GetLeads();
}

[BasicHttpBindingServiceMetadataExchangeEndpoint]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ListAccessService : IListAccessService

Сервисный файл:

<%@ ServiceHost Debug="true" 
            Language="C#" 
            CodeBehind="ListAccessService.cs" 
            Service="FirstServiceFarmSolution.Code.ListAccessService, FirstServiceFarmSolution,Version=1.0.0.0,Culture=neutral,PublicKeyToken=625bdee8db8847ef" %>

Web Config:

<configuration>   
  <system.serviceModel>
    <services>
      <clear/>
      <service name="FirstServiceFarmSolution.Code.ListAccessService"

               behaviorConfiguration="ListAccessServiceBehavior">
        <endpoint name="BasicHttpEndPoint"
                  address=""
                  binding="basicHttpBinding"
                  bindingConfiguration="BasicHttpBindingConfig"
                  contract="FirstServiceFarmSolution.Code.IListAccessService">
          <identity>
            <dns value="sp2010" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <endpoint name="RelayEndPoint" 
                  address="https://cliffwahl-trial.servicebus.windows.net/ListAccessService"
                  binding="basicHttpRelayBinding"
                  bindingConfiguration="HttpRelayBindingConfig"
                  behaviorConfiguration="sharedSecretClientCredentials"
                  contract="FirstServiceFarmSolution.Code.IListAccessService" />
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBindingConfig" />
      </basicHttpBinding>
      <basicHttpRelayBinding>
        <binding name="HttpRelayBindingConfig">
          <security relayClientAuthenticationType="None" mode="Transport"/>
        </binding>
      </basicHttpRelayBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ListAccessServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="false" httpsHelpPageEnabled="false"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="sharedSecretClientCredentials">
          <transportClientEndpointBehavior credentialType="SharedSecret">
            <clientCredentials>
              <sharedSecret issuerName="<my issuer name>" issuerSecret="<my issuer secret>"/>
            </clientCredentials>
          </transportClientEndpointBehavior>
          <serviceRegistrySettings discoveryMode="Public" />
        </behavior>
      </endpointBehaviors>
    </behaviors>      
  </system.serviceModel> 
</configuration>

Кто-нибудь видит проблему с настройкой или кто-то может указать мне на конкретный пример SharePoint для размещения службы WCF с конечной точкой служебной шины?

Спасибо, Cliff

...