Ich habe eine Service-Referenz von Visual Studio 2015 erstellt. Die Kommunikation funktioniert gut, aber ich muss Anwendung frei von app.config-Datei erhalten. Ich habe versucht, eine eigene Bindung und einen Endpunkt zu erstellen, aber tatsächlich erhalte ich SystemNullReference.SystemNullReference beim Verbinden mit WebService
Probe von meinem Code:
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: Objektverweis nicht auf eine Instanz gesetzt eines Objekts.
Server Stapelüberwachung: w System.ServiceModel.Security.IssuanceTokenProviderBase
[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 timeout) w System.ServiceModel.Channels.CommunicationObject.Open (Timespan timeout) w System.ServiceModel.Channels.ServiceChannel.OnOpen (Timespan timeout)
w System.ServiceModel.Channels.CommunicationObject.Open (Timespan timeout) w System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel. ICallOnce.Call (ServiceChannel -Kanal, Span timeout) w System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce (Timespan Timeout, CallOnceManager Kaskade) w System.ServiceModel.Channels.ServiceChannel.EnsureOpened (Timespan timeout) w System.ServiceModel.Channels. ServiceChannel.Call (String Aktion, Boolean Einwege, ProxyOperationRuntime Betrieb Object [] ins, Object [] outs, Span timeout) w System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage method, ProxyOperationRuntime Betrieb) w Systems .ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage Nachricht)Ausnahme erneut ausgelöst bei: w System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) w System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (Message & MsgData, Int32 Typ) w WebServices.Testowy.Emailver.EmailVerNoTestEmailSoap.AdvancedVerifyEmail (String email, Int32 Timeout, String LicenseKey) w WebServices.Test.GetWebService() w C: \ Benutzer \ michal.warchulinski \ Source \ Repos \ Aplixcom_CommonComponents \ Aplixcom_CommonComponents \ WebServices \ ClientClasses.cs: wiersz 65 w App.Main() w C: \ Benutzer \ michal.warchulinski \ Documents \ Visual Studio 2015 \ Projekte \ Soap \ Soap \ Program.cs: wiers z 22
Entschuldigen Sie eine Menge Text. Irgendwelche Hinweise, was diese Ausnahme bieten kann?
Haben Sie den Debugger eingeschaltet und gesehen, welches Bit es nicht mag? Hast du gesehen, welche Zeile genau die Ausnahme auslöst? –
Rufen Sie Client.Open() vor dem Aufrufen der Webservice-Methode auf? –
@ChrisWatts Der Code, der diese Methode aufruft, befindet sich in einer anderen Lösung. Es scheint, dass Ausnahme in geworfen wird "var Client = new Testowy.Emailver.EmailVeroNoTestEmailSoapClient (Bindung, Endpunkt);" Aber wie ich gerade überprüft habe, wenn Projekt in der gleichen Lösung ist, funktioniert alles gut. – warkocz