Хостинг службы WCF Rest в 2003 году с помощью POST / JSON

Поскольку у меня возникают проблемы при размещении службы WCF на Win 2003 Server. Поскольку он отлично работает на моем локальном ПК.

Пожалуйста, дайте мне знать, если мне нужно внести какие-либо изменения в Web Config. Файл. для того же.

Ошибка сервера в приложении '/' В IIS указаны схемы проверки подлинности «IntegratedWindowsAuthentication, Anonymous», но привязка поддерживает указание только одной схемы проверки подлинности. Допустимые схемы проверки подлинности: дайджест, согласование, NTLM, базовая или анонимная. Измените настройки IIS так, чтобы использовалась только одна схема аутентификации. Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека, чтобы получить дополнительную информацию об ошибке и ее происхождении в коде.

Сведения об исключении: System.InvalidOperationException: IIS указал схемы проверки подлинности «IntegratedWindowsAuthentication, Anonymous», но привязка поддерживает только указание только одной схемы проверки подлинности. Допустимые схемы проверки подлинности: дайджест, согласование, NTLM, базовая или анонимная. Измените настройки IIS так, чтобы использовалась только одна схема аутентификации.

Ошибка источника:

Необработанное исключение было создано во время выполнения текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью трассировки стека исключений ниже.

Трассировки стека:

[InvalidOperationException: IIS specified authentication schemes 'IntegratedWindowsAuthentication, Anonymous', but the binding only supports specification of exactly one authentication scheme. Valid authentication schemes are Digest, Negotiate, NTLM, Basic, or Anonymous. Change the IIS settings so that only a single authentication scheme is used.]
   System.ServiceModel.Web.WebServiceHost.SetBindingCredentialBasedOnHostedEnvironment(ServiceEndpoint serviceEndpoint, AuthenticationSchemes supportedSchemes) +446264
   System.ServiceModel.Web.WebServiceHost.AddAutomaticWebHttpBindingEndpoints(ServiceHost host, IDictionary`2 implementedContracts, String multipleContractsErrorMessage) +709
   System.ServiceModel.Web.WebServiceHost.OnOpening() +203
   Microsoft.ServiceModel.Web.WebServiceHost2.OnOpening() in e:\bt\3781\Microsoft.ServiceModel.Web\Microsoft.ServiceModel.Web\WebServiceHost2.cs:69
   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +229
   System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +121
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +479

[ServiceActivationException: The service '/Service.svc' cannot be activated due to an exception during compilation.  The exception message is: IIS specified authentication schemes 'IntegratedWindowsAuthentication, Anonymous', but the binding only supports specification of exactly one authentication scheme. Valid authentication schemes are Digest, Negotiate, NTLM, Basic, or Anonymous. Change the IIS settings so that only a single authentication scheme is used..]
   System.ServiceModel.AsyncResult.End(IAsyncResult result) +11599786
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +194
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +176
   System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +278
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75


Version Information: Microsoft .NET Framework Version:2.0.50727.3615; ASP.NET Version:2.0.50727.3618 

person BJ Patel    schedule 21.03.2011    source источник
comment
проверьте конфигурацию привязки в web.config, вы используете привязку basichttp или wshttp.?   -  person Aravind    schedule 21.03.2011


Ответы (1)


Есть быстрое и правильное исправление.

Быстрое исправление:

В IIS перейдите к свойствам веб-приложения, в котором запущена служба, перейдите на вкладку «Безопасность каталога» и в группе «Аутентификация и контроль доступа» нажмите «Изменить ...». Удалите любую схему аутентификации, которая вам не нужна. Хорошо, из всех диалогов, а затем выполните сброс IIS.

Правильное исправление:

Убедитесь, что ваша служба настроена на использование явной конечной точки. Я обнаружил, что использование стандартной привязки webHttpBinding и настройка конечной точки для использования поведения webHttp было уловкой.

Если вы не укажете конечную точку, WebserviceHost попытается угадать, что вы хотите, и неизменно выберет не то.

В вашем web.config должно быть что-то вроде:

<system.serviceModel>
  <services>
    <service behaviourConfiguration="MyRestService.Behavior" 
             name="MyRestService>
      <endpoint address="" binding="webHttpBinding" contract="IMyRestService"
                behaviourConfiguration="MyRestService.WebHttpEndpointBehavior" />
    </service>
  </services>
  <bindings>
  </bindings>
  <behaviours>
    <serviceBehaviors>
      <behavior name="MyRestService.Behavior">
        <!-- Any configuration for the service, i.e. serviceDebug, etc. -->
      </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
      <behavior name="MyRestService.WebHttpEndpointBehavior">
        <webHttp />
      </behavior>
    </endpointBehaviors>
  </behaviours>
</system.serviceModel>

Конечно, такая настройка конфигурации позволила мне запустить службу WCF REST на сервере Win2k3 с установленным .NET 3.5 SP1.

person Zhaph - Ben Duguid    schedule 24.03.2011