Dies ist eigentlich eine zweiteilige Frage. Entspricht der HttpContext.Current dem aktuellen System.UI.Page-Objekt?
Und die zweite Frage, die wahrscheinlich mit der ersten zusammenhängt, ist, warum ich Folgendes nicht verwenden kann, um festzustellen, ob die aktuelle Seite eine Schnittstelle implementiert:
private IWebBase FindWebBase()
{
if (HttpContext.Current as IWebBase != null)
{
return (IWebBase)HttpContext.Current.;
}
throw new NotImplementedException("Crawling for IWebBase not implemented yet");
}
Der allgemeine Kontext besteht darin, dass einige Steuerelemente wissen müssen, ob sie als SharePoint-Webpart oder als Teil eines Asp.Net-Frameworks ausgeführt werden.
Ich habe das Problem gelöst, indem ich vom Steuerelement verlangt habe, einen Verweis auf sich selbst zu übergeben und die Page-Eigenschaft des Steuerelements zu überprüfen, aber ich bin immer noch neugierig, warum das oben genannte nicht funktioniert.
Der Compilerfehler lautet: System.Web.HttpContext kann nicht über eine Referenzkonvertierung, Boxkonvertierung, Unboxingkonvertierung, Wrappingkonvertierung oder Nulltypkonvertierung in ... IWebBase konvertiert werden.
quelle
Du suchst
HttpContext.Handler
. Da Page IHttpHandler implementiert, erhalten Sie einen Verweis auf die aktuell ausgeführte Seite. Sie müssen sie umwandeln oder zumindest versuchen, sie auf den gewünschten Typ umzustellen.HttpContext.Current
Gibt einfach die Singleton-Instanz von HttpContext zurück. Daher ist und kann es keine Seite sein.quelle
Möglicherweise möchten Sie verwenden,
HttpContext.Current.CurrentHandler
wenn Sie die genaue Seite möchten, die gerade ausgeführt wird. Beispielsweise wird eine Anforderung für Default.aspx gesendet, es wird jedoch ein Fehler ausgegeben, und Sie führen eineResponse.Transfer
Bearbeitung für Ihre benutzerdefinierte ErrorHandler.aspx-Seite durch.CurrentHandler
gibt die Instanz von ErrorHandler.aspx zurück (wenn nach dem Fehler aufgerufen), währendHttpContext.Current.Handler
eine Instanz von Default.aspx zurückgegeben wird.quelle
Bitte beachten Sie meine Antwort:
Warum ist HttpContext.Current.Handler null?
Vielleicht haben Sie Ihr Problem gelöst.
quelle