Служба WCF с атрибутом Factory на .svc не работает на веб-сервере (IIS6), но локально использует IIS7? - PullRequest
4 голосов
/ 02 октября 2009

Я работаю над реализацией подхода WCF, не относящегося к web.config, с использованием атрибута factory в файле .svc для Публикация в блоге Рика Строля :

Factory = "System.ServiceModel.Activation.WebScriptServiceHostFactory"

Локально, я использую IIS7 в Visual Studio 2008 и у меня нет проблем, но при развертывании на моем веб-сервере (в настоящее время работающем IIS6) я получаю ошибку аутентификации в журнале событий:

Исключение: System.ServiceModel.ServiceActivationException: Сервис '/Services/ResourcesService.svc' не может быть активирован из-за исключение во время компиляции. сообщение об исключении: указан IIS схемы аутентификации «IntegratedWindowsAuthentication, Аноним », но только обязательный поддерживает спецификацию ровно одного схема аутентификации. действительный схемы аутентификации дайджест, Переговоры, NTLM, Basic или Anonymous. Измените настройки IIS, чтобы только используется единая схема аутентификации. ---> System.InvalidOperationException: указанные IIS схемы проверки подлинности «IntegratedWindowsAuthentication, Аноним », но только обязательный поддерживает спецификацию ровно одного схема аутентификации. действительный схемы аутентификации дайджест, Переговоры, NTLM, Basic или Anonymous. Измените настройки IIS, чтобы только используется единая схема аутентификации. в System.ServiceModel.Web.WebServiceHost.SetBindingCredentialBasedOnHostedEnvironment (ServiceEndpoint serviceEndpoint, AuthenticationSchemes supportSchemes) в System.ServiceModel.Web.WebServiceHost.AddAutomaticWebHttpBindingEndpoints (ServiceHost хост, IDictionary`2 agedContracts, String multipleContractsErrorMessage) в System.ServiceModel.WebScriptServiceHost.OnOpening () в System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan тайм-аут) в System.ServiceModel.Channels.CommunicationObject.Open () в System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService (String normalizedVirtualPath) в System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable (String normalizedVirtualPath)

После некоторого поиска в Google я изменил настройки аутентификации в папке .svc в моем проекте (на сервере) только на анонимную аутентификацию, но она не сработала. Я все еще получаю сбой веб-службы на вызовах. В IIS7 по умолчанию был только аноним.

У меня нет записей в моем web.config для сервисов (я удалил их согласно этому шаблону).

Я использую скрипт nant для развертывания веб-сайта на сервере и использую его также локально, чтобы убедиться, что скрипт не вызывает проблему.

Любая известная проблема с этим? IIS 6 не в состоянии справиться?

Ответы [ 2 ]

5 голосов
/ 21 января 2010

Я получил эту ошибку ...

Проверил свойства моего веб-сайта в IIS Manager и обнаружил, что анонимная и встроенная проверка подлинности Windows были отмечены, поэтому сняты с флажка Встроенная, но все равно не будут работать.

В итоге обнаружил пост, в котором упоминалось о перезапуске IIS ... сделал это и все заработало !!

0 голосов
/ 03 октября 2009

Основное различие между IIS 6 и IIS 7 по отношению к WCF заключается в поддерживаемых ими привязках. Например, IIS 6 поддерживает привязку basichttp, но не привязку nettcp.

Еще одна вещь, на которую следует обратить внимание: если IIS 6 сконфигурирован для обслуживания файлов .svc, установлен минимальный .net framework 3.0.

...