Аутентификация не прошла при вызове службы WCF с платформы ASP.NET

Платформа: VS 2008, .NET 3.5, C#, Oracle 11g

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

Шаги, которые я предпринял:

  • Построение службы WCF
  • Публикация службы WCF
  • Генерация прокси-класса (.cs) и конфигурирования приложения с помощью svcutil
  • Построение тестового приложения asp.net и добавление прокси-класса и настроек конфигурации, как это было сгенерировано на вышеуказанном шаге.
  • Разрушить тестовое приложение

Оно отлично работает, когда я устанавливаю как WCF, так и тестовое веб-приложение на свой компьютер - Windows XP, IIS 5.1. Но всякий раз, когда я пытаюсь установить их на удаленный сервер, это не работает. Когда я пытаюсь использовать службу (установленную на удаленном сервере - Windows 2003 server, IIS 6), я получаю следующую ошибку:

Запрос на маркер безопасности не может быть удовлетворен, потому что Аутентификация не прошла.

Описание: Необработанное исключение произошло во время исполнения текущий веб-запрос. Пожалуйста, ознакомьтесь с трассировкой стека для получения более подробной информации информацию об ошибке и откуда она появилась в коде.

Исключение Подробности: System.ServiceModel.FaultException: Запрос на маркер безопасности не может быть удовлетворен, потому что аутентификация не прошла.

Ниже представлено содержимое .config-файлов:

wcf раздела Web.Config вызова веб-приложения ASP.NET (Consumer):

  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
    <binding name="WSHttpBinding_IMyWCFService" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
        bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
        maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
        allowCookies="false">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00"
          enabled="false" />
      <security mode="Message">
        <transport clientCredentialType="Windows" proxyCredentialType="None"
        realm="" />
        <message clientCredentialType="Windows" negotiateServiceCredential="true"
        algorithmSuite="Default" establishSecurityContext="true" />
      </security>
    </binding>
      </wsHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://57.23.85.28:8001/MyWCFService/MyWCFService.svc"
      binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMyWCFService"
      contract="IMyWCFService" name="WSHttpBinding_IMyWCFService">
    <identity>
      <dns value="localhost" />
    </identity>
      </endpoint>
    </client>
  </system.serviceModel>

Web.Config из WCF:

<configuration>
  <connectionStrings>
    <add name="DSMyWCF" connectionString="Data Source=XXX;User id=XXX;Password=XXX;"/>
  </connectionStrings>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- When deploying the service library project, the content of the config file must be added to the host's
  app.config file. System.Configuration does not support config files for libraries. -->
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="MyWCFService.MyWCFServiceBehavior"
        name="MyWCFService.MyWCFService">
        <endpoint address="" binding="wsHttpBinding" contract="MyWCFService.IMyWCFService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8731/Design_Time_Addresses/MyWCFService/MyWCFService/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyWCFService.MyWCFServiceBehavior">
          <!-- To avoid disclosing metadata information,
          set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="True"/>
          <!-- To receive exception details in faults for debugging purposes,
          set the value below to true.  Set to false before deployment
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>    
6
задан Ladislav Mrnka 21 September 2011 в 19:39
поделиться