2010-08-28 2 views
6

I-Code von here verwendet und ich erhalte den folgenden Fehler: nicht HttpContext.Current.Server.MapPath()Kann nicht Httpcontext finden in .NET 3.5 und Visual Studio 2008

In Visual Studio 2008 hat die ContextMenuEntry "Lösen" helfen Sie verwenden können, wenn Sie Referenzen fehlen?

Ich habe bereits herausgefunden, dass HttpContext kein Mitglied von System.Web in meiner IDE ist. Laut Hilfe> Info verwende ich .NET 3.5 SP1.

Wie bekomme ich das Laufen?

Wie reagieren Sie normalerweise in dieser Situation? Nach was suchst du in msdn.com?

+0

Vielen Dank für die schnelle und hochqualitative Antworten, besonders Timwi und Guffa! – OneWorld

+0

I Verwenden Sie jetzt immer ReSharper von JetBrains, um diese Probleme zu lösen (wie von David Culp beantwortet). Mit diesem Addon können Sie Visual Studio-Funktionen hinzufügen, die in Eclipse sinnvoll sind. – OneWorld

Antwort

18

Was ich in dieser Situation tun würde, ist auf MSDN (oder Google) für HttpContext. Ich habe das getan und es steht in System.Web. Stellen Sie daher sicher, dass Ihr Projekt einen Verweis auf System.Web enthält.

“Add Reference” menu item

“System.Web” in the Add Reference dialog

... und dann scheint es zu funktionieren:

HttpContext is now available.

+0

Sie rocken! Danke für den Screenshot;) Ich dachte, "System.Web" zu verwenden ist genug. Vielleicht muss ich durch dieses Menü gehen, um Direktiven zu setzen. ODER die IDE hat den kopierten Code nicht erkannt. Magic irgendwie, weil sich nichts in meiner Datei geändert hat;) – OneWorld

+0

@user: Wenn Timwi Ihnen geholfen hat, achten Sie darauf, dies als eine Antwort zu markieren. Beachten Sie, dass Assemblyreferenzen und die Verwendung von Anweisungen unterschiedliche Tiere sind. Assemblyverweise bestimmen, welcher Code für Ihre Anwendung verfügbar ist. Namespace using-Anweisungen bieten nur eine bequeme Abkürzung für den Verweis auf Klassen ohne ihren vollständigen Namespace-qualifizierten Namen. Sie werden feststellen, dass das Hinzufügen von Referenzen nur Ihre csproj/vbproj-Datei ändert. – kbrimington

+0

@ user433718: Zusätzlich zu dem oben genannten @kbrimington, lassen Sie mich auch darauf hinweisen, dass der Name der Assembly nicht immer der Name des Namespace ist (was ihn sehr verwirrend macht). Zum Beispiel befindet sich eine Menge des WPF-Zeugs in der Assembly * PresentationCore *, aber im Namespace * System.Windows.Media *. – Timwi

0

Versuchen einen Verweis auf System.Web in einem Projekt hinzuzufügen.

HttpContext ist ein Mitglied von System.Web.

http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx

+0

hatte ich schon „Mit System.Web“ Aber wenn ich versuche zu geben „Verwenden System.Web.HttpContext“ heißt es „Httpcontext“ nicht im Namensraum „System.Web“ gefunden Ich habe auch "System.Web.HttpContext.Current.Server.MapPath()" im Code versucht. An dieser Stelle sagte Visual Studio erneut "nicht im Namespace ..." – OneWorld

+0

@ user433718: Sie können 'HttpContext' nicht in Ihre' using'-Anweisung einfügen, da es sich um eine Klasse und keinen Namespace handelt. – Guffa

+0

Die IDE kann den Namespace nicht automatisch erkennen, wenn auf die DLL nicht verwiesen wird. Wenn Sie das auch mit nicht referenzierten DLLs machen wollen, glaube ich nicht, dass es möglich ist. –

2

Sie im documentation für die Httpcontext-Klasse aussehen kann, und es sagt Ihnen, dass es in dem System.Web Namespace, in der System.Web.dll Bibliothek.

Also, es zu verwenden, müssen Sie einen Verweis auf die System.Web.dll Bibliothek und benötigen Sie entweder eine using System.Web; Anweisung, oder verwenden Sie den fullly qualifizierten Namen System.Web.HttpContext.Current.Server.MapPath.

Sind Sie sicher, dass Sie die Methode MapPath verwenden möchten? Die Methode ruft den physischen Pfad einer Webreferenz zu einer Datei ab. Wenn der Pfad zu Ihrer CSV-Datei eine Webreferenz ist, z. B. "/data/items.csv", dann möchten Sie die Methode MapPath verwenden, aber wenn Sie einen physischen Pfad wie zum Beispiel "C:\mydata\items.csv" haben, dann möchten Sie ihn nicht konvertieren.

Die MapPath funktioniert auch nur, wenn Sie tatsächlich in einer Webanwendung sind, wo es einen HTTP-Kontext gibt.

+0

Danke für diesen Kommentar. Ich werde das untersuchen. Das wusste ich vorher nicht. Ich wollte nur irgendwie funktionieren ... – OneWorld

+0

Ja, ich brauche diesen Code gar nicht! *hahahaha, Danke! Ich bin sicher, das wäre meine nächste Frage gewesen;) – OneWorld

1

Timwi hat es richtig, aber der Vollständigkeit halber. Nein, VS verfügt nicht über die integrierte Funktion "Solve", diese Funktionalität wurde jedoch teilweise von einigen Add-Ons hinzugefügt. Resharper fügt zum Beispiel die Option hinzu, die Referenz hinzuzufügen und bei Bedarf zu verwenden. Sie muss jedoch zuvor in der Lösung referenziert worden sein, damit das Problem der anfänglichen Suche nicht gelöst wird.

1

Es war ein einfacher Fall, den richtigen Rahmen nicht zu verwenden, damit meine ich die volle fette Version und nicht die Standardversion "light".

Rechtsklick auf das Projekt und dann auf Eigenschaften und stellen Sie sicher, dass die Vollversion des neuesten Framework dh ausgewählt ‚.NET Framework 4' , nicht‘ .NET Framework 4 Client Profile‘

Verwandte Themen