WCF Rest Service Хостинг на 2003 с POST / JSON - PullRequest
2 голосов
/ 21 марта 2011

Как я получаю проблемы при размещении службы 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 

1 Ответ

3 голосов
/ 24 марта 2011

Существует быстрое исправление и правильное исправление.

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

В 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.

...