Ich möchte eine dynamische zuweisen (dh der Referrer ändert sich entsprechend der Anfrage-URL).
Ich kann keine Referrer
oder Headers
Eigenschaft finden. Alles, was ich sehen kann, ist PreRequest
, zu dem ich einen Handler hinzufügen kann. Gibt es eine andere Möglichkeit, einen Verweis an den Handler zu übergeben, ohne eine globale Variable zu verwenden?
void SomeMethod()
{
....
var referrer = "some URL";
//web.Referrer = referrer; Ideal way, but not possible
web.PreRequest += OnPreRequest;
....
}
bool OnPreRequest(HttpWebRequest req)
{
req.Referer = ??; //how to know the referrer address here?
return false;
}
Gibt es eine andere Möglichkeit, einen Verweis an den Handler zu übergeben, ohne eine globale Variable zu verwenden?
Sie können erfasste Variablen verwenden . Siehe z. B. diesen Link "Variablenerfassung in C #" oder diese Closures und erfasste Variable C #
Jetzt können Sie tun
void SomeMethod()
{
var referrer = "some URL";
web.PreRequest += (req){
req.Referer = referrer;
return false;
};
}
Einige Notizen:
Was sind Schließungen?
Closures sind Funktionen, die in einer Variablen gespeichert werden können, als Parameter übergeben werden und sich auf die zum Zeitpunkt der Definition sichtbaren Variablen beziehen.
Erfasste Variable
Die von der Schließung referenzierte äußere Variable wird als erfasste Variable bezeichnet