Firewall: Ist ein Eingang erforderlich, um eine Antwort zu erhalten, während die Regel für ausgehende Nachrichten bereits vorhanden ist?
Ich habe eine MVC-Webanwendung entwickelt, die über Web-APIs verfügt und in Amazon Instance gehostet wird, und eine Windows-Anwendung, um diese APIs aufzurufen, um Antworten von diesem Server zu erhalten.
Sowohl Web- als auch Windows-Anwendungen werden in asp.net framework 4.5 mit der Programmiersprache c # entwickelt.
Die Windows-Anwendung ist auf einem more than 200 client's
System installiert, bei dem es sich um sehr sichere Server handelt, bei denen alle eingehenden Ports in der Firewall blockiert sind.
Ich verwende HttpWebRequest mit BindIPEndPoint zum Aufrufen von Web-APIs unter Verwendung des konfigurierten TCP-Portbereichs [default 7777-7786]
.
API-Aufrufe funktionieren in Windows-Anwendung einwandfrei, wenn die Regeln für eingehende und ausgehende Firewall zulassen.
Das Problem ist jedoch, dass Clients keine Regeln für eingehende Firewall zulassen. Sie erlauben nur Regeln für ausgehende Firewall für diesen Portbereich. Die Windows-Anwendung arbeitet nicht mit blockierten eingehenden Regeln für diesen Portbereich.
Muss ich die eingehende Regel in der Firewall für diesen Portbereich öffnen, um die APIs aufrufen / anfordern / anfragen / antworten zu können? Wenn keine Regel für eingehende Firewall erforderlich ist, erläutern Sie bitte, warum?
Unten ist der API-Aufruf, der einen statischen TCP-Port in meiner Windows-Anwendung verwendet :
try { string address = RevWatchURL; address = address + "api/GetRevGuardLatestPatch"; HttpWebRequest httpWebRequest = WebRequest.Create(address) as HttpWebRequest; httpWebRequest.ContentType = "text/json"; httpWebRequest.Method = "POST"; httpWebRequest.Timeout = 300000; httpWebRequest.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(CommonValues.BindIPEndPointCallbackRGPatch); string enRevGuardUniqueId = Encryption.EncryptionTechnique(Convert.ToString(UniqueId), null, null); using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { string json = "{\"UniqueId\":\"" + enRevGuardUniqueId + "\"}"; streamWriter.Write(json); streamWriter.Flush(); streamWriter.Close(); } try { var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { returnVal = streamReader.ReadToEnd(); streamReader.Close(); httpResponse.Close(); } } catch (WebException ex) { } finally { httpWebRequest.Abort(); } Obj = JsonConvert.DeserializeObject<CommonValues.RevGuardPatchClass>(returnVal); } catch (Exception ex) { MessageBox.Show("Error", "API", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); }
BindIPEndPoint-Methode:
public static IPEndPoint BindIPEndPointCallbackRGPatch(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount) { return new IPEndPoint(IPAddress.Any, 7777); }
0 Antworten auf die Frage
Verwandte Probleme
-
2
Erinnert sich Windows 7 Home Premium an Netzwerkfreigaben-Passwörter?
-
5
XP-Netzwerkverbindung ohne Neustart freigeben?
-
5
Wie richte ich Windows ein, 802.11 gegenüber 3G zu bevorzugen?
-
4
Gibt es eine Möglichkeit, den Scanner eines Multifunktionsdruckers gemeinsam zu nutzen?
-
3
Gibt es eine Möglichkeit, zwei Computer über USB anzuschließen?
-
4
Ersatz für ZoneAlarm auf 64-Bit-Systemen?
-
3
Wie halten Sie mehrere Verbindungen zum Internet?
-
9
Erzwingen Sie eine Webadresse, um HTTPS zu durchlaufen
-
4
iPod-Touch zum Abspielen von Filmen vom PC auf der PS3?
-
2
Mac tritt der Windows-Arbeitsgruppe nicht bei