я получаю следующую ошибку при попытке получить доступ к своему веб-сервису из клиентского приложения, которое является приложением на базе 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>
}