Firewall: Ist ein Eingang erforderlich, um eine Antwort zu erhalten, während die Regel für ausgehende Nachrichten bereits vorhanden ist?

405
Abhishek Parmar

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'sSystem 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); } 
1

0 Antworten auf die Frage