IONOS HTTP Proxy in ASP.NET verwenden
Bitte verwenden sie die "Drucken" Funktion am Seitenende, um ein PDF zu erstellen.
Für ASP.NET Hosting (Windows Webhosting)
In diesem Artikel wird beschrieben, wie Sie den HTTP-Proxy von IONOS für Ihre ASP.NET-Projekte verwenden.
Warum den IONOS HTTP-Proxy verwenden?
Wenn im ASP.NET Hosting ein Programm oder Skript Daten aus einer Internet-Ressource (z.B. Webseite oder Datei) lesen soll, muss die Verbindung über den HTTP-Proxy-Server von IONOS erfolgen. Erfolgt die Verbindung nicht über den Proxy, wird sie aus Sicherheitsgründen abgewiesen.
Wenn Ihre Anwendung also Daten über externe HTTP-Verbindungen liest, müssen Sie sie so konfigurieren, dass sie den Proxy verwendet.
Möglichkeiten zur Verwendung des HTTP-Proxys
Sie können den HTTP-Proxy-Server auf zwei Arten mit Ihren Projekten verwenden:
- Proxy dauerhaft über die web.config konfigurieren
- Proxy temporär direkt im Skript aktivieren
Beide Methoden werden im Folgenden ausführlich beschrieben.
HTTP-Proxy dauerhaft über web.config aktivieren
Falls Ihre Anwendung die Angabe eines Proxyservers über die web.config unterstützt, können Sie die Konfiguration darüber vornehmen.
Damit der Proxyserver automatisch für HTTP-Requests vewendet wird, tragen Sie winproxy.server.lan als defaultProxy im Bereich <system.net> ... </system.net> ein.
Beispiel:
<configuration>
...
<system.net>
<defaultProxy>
<proxy proxyaddress="http://winproxy.server.lan:3128"
bypassonlocal="true"
/>
</defaultProxy>
</system.net>
...
</configuration>
HTTP-Proxy temporär im Skript aktivieren
Alternativ zur Konfiguration über die web.config kann der Proxy auch temporär für Requests aktiviert werden.
Die folgenden Codebeispiele für VB.NET und C# zeigen die Aktivierung des HTTP-Proxy mittels der Property WebRequest.Proxy der WebRequest-Klasse (aus dem system.net-Namespace):
VB.NET
<% @Import Namespace="System.Net" %>
<% @Import Namespace="System.IO" %>
<script language="VB" runat=server>
Sub Page_Load(sender as object, e as System.EventArgs)
Try
Dim wrq As WebRequest = WebRequest.Create("http://domain.tld") //replace domain.tld as wanted
wrq.Proxy = new WebProxy("http:/winproxy.server.lan:3128")
Dim wrp As WebResponse = wrq.GetResponse()
Dim sr as StreamReader = new StreamReader(wrp.GetResponseStream(), Encoding.ASCII)
While sr.Peek() > 0
Response.Write(sr.ReadLine())
End While
Catch ex as WebException
Response.Write(ex.Message)
End Try
End Sub
</script>
C#
<% @Import Namespace="System.Net" %>
<% @Import Namespace="System.IO" %>
<script language="C#" runat=server>
void Page_Load(object sender, System.EventArgs e)
{
try
{
WebRequest wrq = WebRequest.Create("http://domain.tld"); // replace domain.tld as wanted
wrq.Proxy = new WebProxy("http://winproxy.server.lan:3128");
WebResponse wrp = wrq.GetResponse();
StreamReader sr = new StreamReader(wrp.GetResponseStream(), Encoding.ASCII);
while (sr.Peek() > 0)
{
Response.Write(sr.ReadLine());
}
}
catch(WebException ex)
{
Response.Write(ex.Message);
}
}
</script>
HTTP-Proxy-Funktion testen
Im Folgenden zeigen wir am Beispiel der Google reCAPTCHA API, wie Sie die Funktionalität des HTTP-Proxys testen können.
Dazu verwenden wir eine einfache ASP.NET-Seite, die mittels C# einen (unvollständigen) HTTP-Request an die Google reCAPTCHA API sendet. Dieser Request entspricht normalerweise der Anfrage, mit der die Antwort eines Nutzers auf eine reCAPTCHA-Herausforderung überprüft wird. Die Antwort des Google-Servers wird anschließend auf der Website angezeigt.
Bitte beachten Sie, dass es sich hierbei nicht um eine vollständige Implementierung von Google reCAPTCHA handelt. Es wird lediglich der für eine reCAPTCHA-Herausforderung erforderliche Request simuliert – ein tatsächliches reCAPTCHA-Element ist dabei nicht eingebunden.
Zur Überprüfung der Funktionalität des HTTP-Proxys:
- Erstellen Sie auf Ihrem Webspace zwei Dateien mit den Namen default.aspx und default.aspx.cs und kopieren Sie den unten stehenden Code hinein.
- Rufen Sie die Seite default.aspx über Ihre Domain im Browser auf.
- Klicken Sie auf Start.
Es wird nun ein Request gesendet und die Antwort unmittelbar vor dem Eingabefeld der Seite angezeigt. - Prüfen Sie, ob links vom Eingabfeld ein Text angezeigt wird. Die Ausgabe sollte in etwa so aussehen:
{ "success": false, "error-codes": [ "missing-input-response", "missing-input-secret" ] }
Es ist nur wichtig, dass dort etwas ist und kein Systemfehler vorliegt. Wenn Sie letzteres nicht korrigieren können, prüfen Sie, ob der Proxy alternativ über web.config aktiviert werden kann.
default.aspx
<%@ Page Language="C#" AutoEventWireup="true" Codefile="default.aspx.cs" Inherits="WebApplication1._default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="URL:"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" Width="269px" Text="https://www.google.com/recaptcha/api/siteverify"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Start" OnClick="Button1_Click" />
</div>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</form>
</body>
</html>
default.aspx.cs
using System;
using System.Net;
using System.IO;
namespace WebApplication1
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
WebrequesProxy();
}
protected void WebrequesProxy()
{
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(TextBox1.Text);
WebProxy myProxy = new WebProxy("http://winproxy.server.lan:3128/",true);
wrGETURL.Proxy = myProxy;
Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();
StreamReader objReader = new StreamReader(objStream);
Label1.Text = objReader.ReadToEnd();
}
}
}