Ошибка system.service.security при использовании привязки wshttp - PullRequest
0 голосов
/ 28 июня 2011

я получаю следующую ошибку при попытке получить доступ к своему веб-сервису из клиентского приложения, которое является приложением на базе Windows

System.ServiceModel.Security.SecurityNegotiationException: Безопасный канал не может быть открыт потому что переговоры о безопасности с удаленная конечная точка не выполнена. Это может быть из-за отсутствия или неправильно указанный EndpointIdentity в EndpointAddress, используемый для создания канал. Пожалуйста, подтвердите EndpointIdentity указан или подразумевается по адресу EndpointAddress правильно идентифицирует удаленную конечную точку. ---> System.ServiceModel.FaultException: Запрос на токен безопасности имеет недействительные или неправильно сформированные элементы. в System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault (Message сообщение, цель EndpointAddress) в System.ServiceModel.Security.IssuanceTokenProviderBase`1.ThrowIfFault (Message сообщение, цель EndpointAddress) в System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody (Message incomingMessage, SspiNegotiationTokenProviderState sspiState) --- конец внутреннего трассировка стека исключений ---

Трассировка стека сервера: в System.ServiceModel.Security.IssuanceTokenProviderBase 1.DoNegotiation(TimeSpan timeout) at System.ServiceModel.Security.SspiNegotiationTokenProvider.OnOpen(TimeSpan timeout) at System.ServiceModel.Security.TlsnegoTokenProvider.OnOpen(TimeSpan timeout) at System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.Security.SecurityUtils.OpenCommunicationObject(ICommunicationObject obj, TimeSpan timeout) at System.ServiceModel.Security.SymmetricSecurityProtocol.OnOpen(TimeSpan timeout) at System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.Channels.SecurityChannelFactory 1.ClientSecurityChannel 1.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation operation, EndpointAddress target, Uri via, SecurityToken currentToken, TimeSpan timeout) at System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan timeout) at System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(TimeSpan timeout) at System.ServiceModel.Security.SecuritySessionClientSettings 1.ClientSecuritySessionChannel.OnOpen (TimeSpan тайм-аут) в System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan тайм-аут) в System.ServiceModel.Channels.ServiceChannel.OnOpen (TimeSpan тайм-аут) в System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan тайм-аут) в System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce (TimeSpan тайм-аут, каскад CallOnceManager)
в System.ServiceModel.Channels.ServiceChannel.EnsureOpened (TimeSpan тайм-аут) в System.ServiceModel.Channels.ServiceChannel.Call (String действие, логическое одностороннее, Операция ProxyOperationRuntime, Object [] ins, Object [] outs, TimeSpan тайм-аут) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, ProxyOperationRuntime операция) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (Шеззаде сообщение)

Я также использую провайдер членства в asp ....

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

спасибо

{

<services>
  <service name="AutoWatch.Entity.WcfService.SecurityService" behaviorConfiguration="ServiceBehavior">
    <endpoint binding="wsHttpBinding" bindingConfiguration="ServiceBinding" bindingName="ServiceBinding" contract="AutoWatch.Entity.WcfService.ISecurityService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost..." />
      </baseAddresses>
    </host>
  </service>
  <service name="servicename" behaviorConfiguration="ServiceBehavior">
    <endpoint binding="wsHttpBinding" bindingConfiguration="ServiceBinding" bindingName="ServiceBinding" contract="Service" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/.../" />
      </baseAddresses>
    </host>
  </service>
</services>
<bindings>     
  <wsHttpBinding>
    <binding name="ServiceBinding"></binding>
  </wsHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <!-- Configure role based authorization to use the Role Provider -->
      <serviceAuthorization principalPermissionMode="UseAspNetRoles" roleProviderName="SqlRoleProvider" />
      <serviceCredentials>
        <!-- Configure user name authentication to use the Membership Provider -->
        <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="SqlMembershipProvider" />
        <!-- Configure the service certificate -->
        <serviceCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" findValue="......co.za" />
      </serviceCredentials>
      <!-- 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="True" />
    </behavior>
  </serviceBehaviors>
</behaviors>  

}

...