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

Я создал службу WCF, и один из ее методов подключается к базе данных для выполнения какой-либо задачи. Когда я вызываю метод службы WCF с клиента (веб-сайт или консольное приложение), я получаю сообщение об ошибке «Ошибка входа в систему (« ошибка входа в систему », вход в систему из ненадежного домена»). Я могу успешно подключиться к базе данных с веб-сайта, но Когда я делаю то же самое, вызывая службу WCF и подключаясь к той же базе данных из службы, я получаю эту ошибку. Это как-то связано с конфигурацией клиента? Я создал клиента с помощью утилиты svcutil и использовал ту же конфигурацию клиента, сгенерированную здесь. Вот как это выглядит. Пожалуйста, помогите. В среде разработчика он должен использовать мою учетную запись для подключения к базе данных, после развертывания в тестовой среде, он должен использовать учетную запись службы, настроенную в пуле приложений IIS для службы WCF. Я использую веб-сервер Visual Studio во время разработки .

  <system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
        allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
        useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows" proxyCredentialType="None"
            realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://localhost/WcfService/Service1.svc"
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"
      contract="IService1" name="BasicHttpBinding_IService1" />
</client>

Ответы [ 2 ]

2 голосов
/ 14 октября 2010

Ваш clientCredentialType - «Windows», я подозреваю, что служба WCF использует делегирование, то есть учетные данные пользователя от клиента используются в службе, чтобы попытаться связаться с базой данных. Иными словами, если клиентское приложение выполняется в окне Windows с зарегистрированным пользователем DomainA \ SomeUser, учетные данные в службе будут DomainA \ SomeUser, а не учетная запись, настроенная в пуле приложений IIS. Эта ссылка должна помочь вам запустить: Wcf олицетворение

0 голосов

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

Я отвечаю в основном, потому что ваш вопрос абстрактный - нет операционной системы, IIS, версий / редакций / режимов SQL Server, нет подробностей о конфигурации, ошибках и т. Д.

Это классическая проблема "двойного прыжка". Вы также можете узнать разницу между олицетворением (используется только локально) и делегированием (используется для подключения к другому компьютеру). Вам следует настроить доверие для делегирования, вероятные имена участников-служб (SPN) - имена участников службы, на ваших производственных серверах, а также соответствующим образом кодировать свое приложение.
Plz поиск в Интернете по ключевым словам "двойной прыжок", IIS, SQL Server ", олицетворение, делегирование, asp.net, аутентификация, доверие, развертывание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...