2014-12-12 1 views
1

У меня возникла проблема с нашим веб-сервисом. Мы не создали веб-сервис, поэтому мы не знаем, что на самом деле происходит. Сначала он работает на нашем сервере, но иногда это не приводит к перезагрузке. Затем теперь отображается сообщение об ошибке:Ошибка идентификации конечной точки веб-службы

Защищенный канал нельзя открыть, поскольку переговоры по безопасности с удаленной конечной точкой не удались. Это может быть связано с отсутствием или неверным указанием EndpointIdentity в EndpointAddress, используемом для создания канала. Убедитесь, что EndpointIdentity, указанный или подразумеваемый EndpointAddress, правильно идентифицирует удаленную конечную точку.

Но наш веб-сервис даже не обеспечен! Наш веб-конфигурации является:

<configuration> 
    <connectionStrings> 
    <add name="DefaultConnection" connectionString="Server=;Database=;User ID=;Password=;Trusted_Connection=False;" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <httpRuntime executionTimeout="3600000" maxRequestLength="102400" /> 
    </system.web> 
    <appSettings> 
    <add key="baseAddress" value="http://localhost:20088" /> 
    <add key="timeout" value="120"/> 
    <add key="provider" value="System.Data.SqlClient" /> 
    </appSettings> 
    <system.serviceModel> 
    <services> 
     <service name="H2WcfService.DataAccess" behaviorConfiguration="H2WcfServiceBehavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:20088"/> 
      </baseAddresses> 
     </host> 
     <endpoint address="" binding="wsHttpBinding" contract="H2WcfService.IDataAccess" bindingConfiguration="DataAccess"> 
      <identity> 
      <dns value="localhost:20088"/> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     </service> 
     <service name="H2WcfService.LoginService" behaviorConfiguration="H2WcfServiceBehavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:20088"/> 
      </baseAddresses> 
     </host> 
     <endpoint address="" binding="wsHttpBinding" contract="H2WcfService.ILoginService" bindingConfiguration="Authentic"> 
      <identity> 
      <dns value="localhost:20088"/> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     </service> 
     <service name="H2WcfService.LMSService" behaviorConfiguration="H2WcfServiceBehavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:20088"/> 
      </baseAddresses> 
     </host> 
     <endpoint address="" binding="wsHttpBinding" contract="H2WcfService.ILMSService" bindingConfiguration="LMSService"> 
      <identity> 
      <dns value="localhost:20088"/> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="H2WcfServiceBehavior" > 
      <serviceMetadata httpGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="DataAccess" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"> 
      <security mode="None"> 
      <transport clientCredentialType="None" /> 
      <message establishSecurityContext="false" /> 
      </security> 
     </binding> 
     <binding name="Authentic"> 
      <security mode="None"> 
      <transport clientCredentialType="None" /> 
      <message establishSecurityContext="false" /> 
     </security> 
     </binding> 
     <binding name="LMSService"> 
     <security mode="None"> 
      <transport clientCredentialType="None" /> 
      <message establishSecurityContext="false" /> 
     </security> 
     </binding> 
    </wsHttpBinding> 
    </bindings> 
</system.serviceModel> 
<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer> 
</configuration> 

ответ

1

Наконец нашел ответ! В основном, под Binding в system.serviceModel моего приложения asp.net web.config, я бы добавил:

<security mode="None"/> 

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

+0

Единственное, что всегда полезно делать, это проверить значения по умолчанию для разных свойств конфигурации, поскольку они применяются к используемой вами привязке. Например, 'wsHttpBinding' имеет режим безопасности по умолчанию, например' Message', тогда как 'basicHttpBinding' имеет режим безопасности по умолчанию' None' (IIRC) и 'netTcpBinding' имеет' Transport'. Если вы не укажете значение в конфигурации (или коде), значения по умолчанию будут использоваться. – Tim

0

Под тэгом безопасности, попробуйте это

<security mode="None"> 

<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" /> 

<message clientCredentialType="Windows" negotiateServiceCredential="true" establishSecurityContext="true" /> 

</security> 
+0

Я попробовал ваше решение, но он по-прежнему бросает эту ошибку. – ezekiel

0

Мы зафиксировали

старый код

<security mode="TransportWithMessageCredential"> 
         <transport clientCredentialType="None" /> 
         <message establishSecurityContext="false" /> 
        </security> 

Новый код

<security mode="TransportWithMessageCredential"> 
          <transport clientCredentialType="None" proxyCredentialType="None" 
           realm="" /> 
          <message clientCredentialType="UserName" negotiateServiceCredential="true" 
           algorithmSuite="Default" establishSecurityContext="false" /> 
         </security>