Ich arbeite an einer App im Metro-Stil, die über einen Webdienst mit unserem Server kommuniziert. Schon früh entdeckte ich, dass ich die Funktionen "Home oder Work Networking" (privateNetClientServer) und "Internet Client" (internetClient) im Manifest hinzufügen musste, da sonst die App beim Versuch, Webdienstanrufe an eine entfernte Stelle zu senden, auf Ausnahmen reagierte Gastgeber.Socket-Ausnahme in der App im Metro-Stil, wenn die Freigabe für ein Netzwerk aktiviert ist
Nun aber auf einigen Maschinen Ich erhalte die folgende Fassung Ausnahme, wenn die Anwendung unseres Web-Service zu rufen versucht:
System.ServiceModel.EndpointNotFoundException: There was no endpoint listening at https://[my_service_url] that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. ---> System.Net.WebException: Unable to connect to the remote server
--->
System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions [my_server_ip_address]:443
at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
at System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStreamAsyncResult.CompleteGetRequestStream(IAsyncResult result)
--- End of inner exception stack trace ---
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannelProxy.TaskCreator.<>c__DisplayClass5`1.<CreateGenericTask>b__4(IAsyncResult asyncResult)
at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
Interessanterweise, wenn ich deaktivieren teilen (Rechtsklick auf die WiFi-Verbindung , wählen Sie "Freigabe aktivieren oder deaktivieren" und wählen Sie "Nein, nicht die Freigabe aktivieren oder mit Geräten verbinden"), das Problem verschwindet und Web-Service-Aufrufe erfolgreich. Wenn Sie dann zurückgehen und die Freigabe wieder aktivieren (wählen Sie "Ja" anstelle von "Nein"), kehrt das Problem zurück.
Es scheint also, dass das Problem damit verbunden ist, ob das Netzwerk Freigabe und Geräte aktiviert hat. Ich bin mir der Zuordnung nicht ganz sicher, aber ich denke, dass dies im Wesentlichen auf die Unterscheidung zwischen "Heim/Arbeit" und "öffentlichen" Netzwerken hinausläuft; in meinem Fall scheitern die Web-Service-Aufrufe, wenn das Netzwerk "Heim/Arbeit" ist und erfolgreich, wenn das Netzwerk "öffentlich" ist - aber beide Arten von Netzwerkfunktionen sind in meiner App deklariert, und dieses Problem tritt nicht bei allen Boxen auf. Es gibt auch keine Firewall oder andere Netzwerkbeschränkungen; Es ist eine nackte Win8-Installation ohne zusätzliche Anpassungen.
Schließlich ist dies nicht auf Web-Services isoliert - die gleiche Anwendung hat Iframes, die unter den genauen Bedingungen wie die Webdienste fehlschlagen oder gelingen.
Versuchen Schannel Protokollierung aktivieren und sehen, ob etwas http sticht: // support .microsoft.com/kb/260729 –