2011-01-25 7 views
1

내 응용 프로그램에서 Windows 응용 프로그램과 WCF 서비스를 사용하고 있습니다. 웹 서버에 내 서비스를 게시하고 내 구성 설정에서 해당 endPointAddress를 참조했습니다. 응용 프로그램이 내 시스템과 일부 시스템에서 제대로 작동하지만 다른 시스템에 로그인 할 수 없습니다. 그리고 그것의 로그인 예외 동안 던졌습니다 ...C#에서 로그인하는 동안 예외가 발생했습니다.

여기 내가 내 예외를 언급, 어느 날이 문제의 해결책을 말할 수 있습니까? 사전에 감사합니다 ..

예외 : 'http://example.com/DashBoardPointsService/Service.svc'타겟 '과

SOAP 보안 협상 http://example.com/DashBoardPointsService/ Service.svc '실패했습니다. 자세한 내용은 내부 예외를 참조하십시오.

내부 예외 :

System.ComponentModel.Win32Exception : 보안 지원 공급자 인터페이스 (SSPI) 협상에 실패했습니다. System.ServiceModel.Security.WindowsSspiNegotiation.GetOutgoingBlob에서 (바이트 [] incomingBlob, IExtendedProtectionSupport extendedProtectionSupport) System.ServiceModel.Security.RequestSecurityToken.GetBinaryNegotiation에서 System.ServiceModel.Security.SspiNegotiationTokenProvider.GetOutgoingBlobProxy.GetOutgoingBlob (의 ChannelBinding의 ChannelBinding) 에서 () System.ServiceModel.Security.WSTrust.Driver.WriteRequestSecurityToken에서 (RequestSecurityToken 첫 번째, XmlWriter를 XmlWriter를) System.ServiceModel.Channels.BodyWriter.WriteBodyContents에서 System.ServiceModel.Security.RequestSecurityToken.WriteTo (XmlWriter를 작가) 에서 (XmlDictionaryWriter 작가) at System.ServiceModel.Channels.Message.OnWriteMessage (XmlDictionaryWriter 작성자) at System.Serv iceModel.Channels.BufferedMessageWriter.WriteMessage (메시지 메시지, BufferManager bufferManager, INT32 initialOffset, INT32 maxSizeQuota) System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.WriteMessage에서 (메시지 메시지, INT32 maxMessageSize, BufferManager bufferManager, INT32 messageOffset) 시스템에서 . System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.SendRequest에서 System.ServiceModel.Channels.HttpOutput.Send (시간 범위 제한 시간) 에서 ServiceModel.Channels.HttpOutput.SerializeBufferedMessage (메시지 메시지) (메시지 메시지, 시간 범위 제한 시간) 에서 System.ServiceModel.Channels.RequestChannel.Request (메시지 메시지, TimeSpan 시간 초과) at System.ServiceModel.Security.IssuanceTokenProviderBase`1.DoNegotiation (TimeSpan timeout)

스택 추적 :

at System.ServiceModel.Security.IssuanceTokenProviderBase`1.DoNegotiation(TimeSpan timeout) 
    at System.ServiceModel.Security.SspiNegotiationTokenProvider.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 timeout) 
    at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout) 
    at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade) 
    at System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

Exception rethrown at [0]: 
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
    at IService.GetLoginDetails(String strUserName, String strPassword) 
    at ExportReportsandPointsDetails.frmLogin.btnSubmit_Click(Object sender, EventArgs e) 

출처 :

이 WCF 서비스의 내 구성 설정입니다 :

public void CreateConnection() 
{ 
    try 
    { 
     string strNewURL = "http://example.com/DashBoardPointsService/Service.svc"; 
     EndpointAddress ep = new EndpointAddress(strNewURL);     

     WSHttpBinding binding = new WSHttpBinding(); 
     binding.Security.Mode = SecurityMode.Message; 

     binding.MaxBufferPoolSize = 819222; 
     binding.MaxReceivedMessageSize = 819222; 
     binding.ReceiveTimeout = TimeSpan.MaxValue; 
     binding.SendTimeout = TimeSpan.MaxValue; 
     binding.OpenTimeout = TimeSpan.MaxValue; 
     binding.CloseTimeout = TimeSpan.MaxValue; 
     binding.MaxReceivedMessageSize = 99999999; 
     binding.MaxBufferPoolSize = 99999999; 
     binding.ReaderQuotas.MaxArrayLength = 714748; 
     binding.ReaderQuotas.MaxBytesPerRead = 214748; 
     binding.ReaderQuotas.MaxDepth = 2147483647; 
     binding.ReaderQuotas.MaxNameTableCharCount = 214749; 
     binding.ReaderQuotas.MaxStringContentLength = 214749; 

     objConnectionManager = new ChannelFactory<IService>(binding, ep);     
     objActivatedConnectionManager = objConnectionManager.CreateChannel();     

    } 
    catch (Exception ex) 
    { 
     objlog.Write(ex); 
    } 
} 
+0

WCF 서비스의 구성을 게시 할 수 있습니까? clientCredential 유형이란 무엇입니까? 클라이언트가 다른 도메인에 연결하지 못한 컴퓨터입니까? –

+0

이것은 wcf의 설정이며 함수에서 사용했습니다. – Suryakavitha

+0

나는 그것을 보지 않는다. 포맷팅을 놓쳤습니까? wsHttpBinding을 사용하려고하고 WCF 서비스 또는 클라이언트가 다른 도메인에있는 경우 작동하지 않습니다. 대신 basicHttpBinding 사용 –

답변

0

이 아마 권한 문제입니다.

클라이언트에 서버에 의해 차단되는 보안 컨텍스트가 있습니다.

클라이언트의 ID와 서버의 사용 권한을 확인하십시오.

관련 문제