2009-12-29 9 views
16

Beide haben Request und Response Eigenschaften, aber ich kann keine Methode schreiben, die entweder HttpContext oder HttpContextBase nimmt. An einigen Orten ist entweder das eine oder das andere verfügbar, also muss ich beides behandeln. Ich weiß, HttpContextWrapper kann in eine Richtung konvertieren, aber immer noch ... warum ist es so?Warum wird HttpContext nicht von HttpContextBase abgeleitet?

+5

Ich kam hierher, um herauszufinden, wie man eine 'HttpContextBase' in' HttpContext' umwandelt. Ihre Frage enthielt die Antwort. Die Antwort ist 'HttpContextWrapper', die von' HttpContextBase' abgeleitet ist und einen 'HttpContext' als Parameter für den Konstruktor verwendet. Wie der Name andeutet, wird ein 'HttpContext' eingebunden und als' HttpContextBase'-kompatibles Objekt zur Verfügung gestellt. Vielen Dank! –

+0

http://StackOverflow.com/a/4567707/955831 –

Antwort

23

HttpContext gibt es seit .NET 1.0. Aus Gründen der Rückwärtskompatibilität können sie diese Klasse nicht ändern. HttpContextBase wurde in ASP.NET MVC eingeführt, um eine bessere Testbarkeit zu ermöglichen, da es einfacher ist, es zu stempeln.

0

Dies ist eine alte Frage, aber ich hatte gerade das gleiche Problem und die Antwort ist in Gunders Kommentar.

Erstellen Sie Methoden HttpContectBase verwenden und dann wickeln Sie Ihren Kontext in eine HttpContextWrapper, wenn Sie es aus dem Code

public class SomeClass{ 
    ... other stuff in your class 
public void MyMethod(HttpContextBase contextbase){ 
    ...all your other code 
    } 
} 

Nutzungs

var objSomeClass = new SomeClass(); 
objSomeClass.MyMethod(new HttpContextWrapper(HttpContext.Current)); 

nennen wollen denke ich HttpContext.Current sein null, wenn Sie diesen Aufruf über AJAX, machen Ich werde untersuchen, wie Sie den Kontext erhalten und diesen Beitrag aktualisieren.

+0

Ich denke, Sie sollten noch einen HttpContext auch mit Ajax-Aufrufe haben – JoelFan

Verwandte Themen