Visual Studio 2015でサービス参照を作成しました。通信は正常に機能しますが、app.configファイルをアプリケーションから解放する必要があります。私は独自のバインディングとエンドポイントを作成しようとしましたが、実際にはSystemNullReferenceを受け取ります。私のコードのWebServiceに接続中にSystemNullReferenceが発生する
サンプル:
var binding = CreateBinding();
var endpoint = new EndpointAddress("http://ws.cdyne.com/emailverify/Emailvernotestemail.asmx");
var Client = new Testowy.Emailver.EmailVerNoTestEmailSoapClient(binding, endpoint);
private static BasicHttpBinding CreateBinding()
{
var binding = new BasicHttpBinding();
binding.Name = "EmailVerNoTestEmailSoap";
binding.CloseTimeout = TimeSpan.FromMinutes(1);
binding.OpenTimeout = TimeSpan.FromMinutes(1);
binding.ReceiveTimeout = TimeSpan.FromMinutes(10);
binding.SendTimeout = TimeSpan.FromMinutes(1);
binding.AllowCookies = false;
binding.BypassProxyOnLocal = false;
binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
binding.MaxBufferSize = 65536;
binding.MaxBufferPoolSize = 524288;
binding.MessageEncoding = WSMessageEncoding.Text;
binding.TextEncoding = System.Text.Encoding.UTF8;
binding.TransferMode = TransferMode.Buffered;
binding.UseDefaultWebProxy = true;
binding.ReaderQuotas.MaxDepth = 32;
binding.ReaderQuotas.MaxStringContentLength = 8192;
binding.ReaderQuotas.MaxArrayLength = 16384;
binding.ReaderQuotas.MaxBytesPerRead = 4096;
binding.ReaderQuotas.MaxNameTableCharCount = 16384;
binding.Security.Mode = BasicHttpSecurityMode.None;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
binding.Security.Transport.Realm = "";
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
binding.Security.Message.AlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Default;
return binding;
}
System.NullReferenceException:オブジェクト参照オブジェクトのインスタンス に設定されていません。
サーバースタックトレース: System.ServiceModel.Security.IssuanceTokenProviderBase
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(のMessageData & msgData、のInt32 W W System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessageが reqMsg、IMessageがretMsg):[0]で2101.DoNegotiation(TimeSpan timeout) w System.ServiceModel.Security.SspiNegotiationTokenProvider.OnOpen(TimeSpan timeout) w System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout) w System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) w System.ServiceModel.Security.CommunicationObjectSecurityTokenProvider.Open(TimeSpan timeout) w System.ServiceModel.Security.SymmetricSecurityProtocol.OnOpen(TimeSpan timeout) w System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout) w System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) w System.ServiceModel.Channels.SecurityChannelFactory
1.ClientSecurityChannel1.OnOpen(TimeSpan timeout) w System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) w System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation operation, EndpointAddress target, Uri via, SecurityToken currentToken, TimeSpan timeout) w System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan timeout) w System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(TimeSpan timeout) w System.ServiceModel.Security.SecuritySessionClientSettings
1.ClientSecuritySessionChannel.OnOpen(TimeSpanの タイムアウト)ワット System.ServiceModel.Channels.CommunicationObject.Open(TimeSpanの タイムアウト)ワット ワットSystem.ServiceModel.Channels.ServiceChannel.OnOpen(のTimeSpanタイムアウト) System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel W System.ServiceModel.Channels.CommunicationObject.Open(のTimeSpan タイムアウト)W
。 ICallOnce.Call(ServiceChannelSystem.ServiceModel.Channels W System.ServiceModel.Channels.ServiceChannel.EnsureOpened(のTimeSpan タイムアウト)W System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(のTimeSpan タイムアウト、CallOnceManagerカスケード)W 10チャンネルのTimeSpanタイムアウト)。 ServiceChannel.Call システムwはSystem.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCallで、ProxyOperationRuntime動作)W(文字列 アクションは、ブール一方向は、ProxyOperationRuntime動作は、[]イン、 オブジェクト[]アウト、のTimeSpanタイムアウトオブジェクト) .ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage メッセージ)例外再スロー Cワット WebServices.Test.GetWebService()ワット WebServices.Testowy.Emailver.EmailVerNoTestEmailSoap.AdvancedVerifyEmail(文字列 電子メール、のInt32タイムアウト、文字列LicenseKey)ワットタイプ):\ Users \ユーザーmichal.warchulinskiソース\レポ\ \ Aplixcom_CommonComponents \ Aplixcom_CommonComponents \ WebServices \ ClientClasses.cs:wiersz 65 w App.Main()w C:¥Users¥michal.warchulinski¥Documents¥Visual Studio 2015 \ Projects \ Soap \ Soap \ Program.cs:wiers z 22
すみません。このexeptionを提供する手がかりは何ですか?
デバッガをオンにして、どのビットが好きではないかを確認しましたか?どの行が例外を正確にスローしたのか見たことがありますか? –
Webサービスメソッドを呼び出す前にClient.Open()を呼び出していますか? –
@ChrisWattsこのメソッドを呼び出すコードは別の解決策です。例外がスローされているようです "var Client = new Testowy.Emailver.EmailVerNoTestEmailSoapClient(バインディング、エンドポイント);"しかし、プロジェクトが同じソリューションになっている瞬間を前に確認したように、すべてうまく動作します。 – warkocz