2011-01-25 17 views
1

私のアプリケーションでWindowsアプリケーションとWCFサービスを使用しています。私はWebサーバに自分のサービスを公開しており、自分の設定でendPointAddressを参照しています。アプリケーションが私のシステムと一部のシステムで正常に動作していますが、別のシステムにログインできませんでした。そして、ログイン中に例外がスローされます。C#でログイン中に例外が発生しました

私はこの例外の解決法を教えてもらえますか? 事前のおかげで..

例外:ターゲットのための 'http://example.com/DashBoardPointsService/Service.svc' が

SOAPのセキュリティネゴシエーション「http://example.com/DashBoardPointsService/ Service.svc 'が失敗しました。詳細については、内部例外を参照してください。

内部例外:

System.ComponentModel.Win32Exception:セキュリティサポートプロバイダインターフェイス(SSPI)の交渉に失敗しました。 System.ServiceModel.Security.SspiNegotiationTokenProvider.GetOutgoingBlobProxy.GetOutgoingBlob System.ServiceModel.Security.RequestSecurityToken.GetBinaryNegotiationに(でChannelBindingでChannelBinding) ()でSystem.ServiceModel.Security.WindowsSspiNegotiation.GetOutgoingBlob(バイト[] incomingBlob、IExtendedProtectionSupport extendedProtectionSupport) でSystem.ServiceModel.Security.WSTrust.Driver.WriteRequestSecurityTokenで (RequestSecurityToken RST、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(メッセージのメッセージ、のTimeSpanタイムアウト)でServiceModel.Channels.HttpOutput.SerializeBufferedMessage System.ServiceModel.Channels.HttpOutput.Sendで(メッセージメッセージ) (のTimeSpanタイムアウト) で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とサーバーのアクセス許可を確認します。

関連する問題