Ошибка IIS при размещении службы данных WCF на общем веб-узле - PullRequest
0 голосов
/ 17 октября 2010

У моего клиента есть веб-сайт, размещенный на общем веб-сервере. У меня нет доступа к IIS. Я пытаюсь развернуть Службу данных WCF на своем сайте. Я получаю эту ошибку:

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

Я немного искал SO и другие сайты, но не могу найти кого-то с моей точной ситуацией. Я не могу изменить настройки IIS, поскольку это сторонний сервер и общий веб-сервер. Так что мой единственный вариант - изменить что-то в коде или в конфигурации сервиса. Мой сервисный конфиг выглядит так:

<system.serviceModel xdt:Transform="Insert">
  <serviceHostingEnvironment>
    <baseAddressPrefixFilters>
      <add prefix="http://www.somewebsite.com"/>
    </baseAddressPrefixFilters>
  </serviceHostingEnvironment>
  <bindings>
    <webHttpBinding>
      <binding name="{Binding Name}" >
        <security mode="None" />
      </binding>
    </webHttpBinding>
  </bindings>
  <services>
    <service name="{Namespace to Service}">
      <endpoint address="" binding="webHttpBinding" bindingConfiguration="{Binding Name}" contract="System.Data.Services.IRequestHandler">
      </endpoint>
    </service>
  </services>
</system.serviceModel>

Как видите, я пытался установить режим безопасности на "Нет", но это не помогло. Что я должен изменить, чтобы устранить эту ошибку?

1 Ответ

0 голосов
/ 01 ноября 2010

Я не слишком уверен в этом, но прочитав эту статью, я думаю, вы не можете установить ни одну аутентификацию прямо из конфигурации.

Настройки аутентификации Windows выполняются через IIS.

Вы пытались сделать это в своем коде, прежде чем вызывать какие-либо данные:

MyDataContext ctx = new MyDataContext(uri); 
ctx.Credentials = System.Net.CredentialCache.DefaultCredentials;  
ctx.Credentials = new NetworkCredential( 
    "username", 
    "password", 
    "domain");

Конечно, вы должны иметь имя пользователя, пароль и домен.

Надеюсь, чтопомогло =)

...