2009-05-29 10 views
0

Ich habe den folgenden Code in meinem Webformular Code-Behind-Klassen verwendet. Ich möchte es in meinen normalen .cs-Dateien verwenden: zum Beispiel bei Datenbankaufrufen. Aber wenn ich versuche, es außerhalb eines Webformulars zu verwenden, erhalte ich den folgenden Fehler, wenn ich versuche, mit base zu request.Request.ApplicationPath: 'Objekt' enthält keine Definition für 'Request'. Was wäre die einfache, korrekte Art, dem Stamm in einer regulären .cs-Klassendatei in einem Webanwendungsprojekt zuzuordnen?So ordnen Sie Pfade in ASP.NET Nicht-Form-Klassendatei zu

protected void LogError(string errMsg, string errTrace) 
    { 
     string mailSubject = "oops!"; 
     string mailBody = errMsg + errTrace; 

     System.Configuration.Configuration config 
      = WebConfigurationManager.OpenWebConfiguration(base.Request.ApplicationPath); 
     AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings"); 

     // Extract values from the web.config file 
     string toAddress = "[email protected]"; 
     string fromAddress = appSettings.Settings["FromEmailAddr"].Value; 
     string emailHost = appSettings.Settings["EmailHost"].Value; 

     mailProvider.SendMail(fromAddress, toAddress, mailSubject, mailBody.ToString()); 
    } 

Antwort

1

HttpContext.Current.Request.ApplicationPath.

1

Sie können die Klasse HttpContext.Current zum Verweisen auf die aktuelle Instanz einer Seite außerhalb einer Page-Klasse verwenden.

In Ihrem Fall, die Sie verwenden möchten:

HttpContext.Current.Request 

Statt:

base.Request 
+0

Das ist ein cooler Gravatar! Danke für die Lösung, John hat dich nur am Pfosten zerrissen :-) – IrishChieftain

1

Sie verweisen "Basis", die die Seite verwiesen oder Usercontrol-Objekt, wenn innerhalb des UI-Code leben. Jetzt, da Sie es aus diesem Code herausgenommen haben, wird die neue Klasse nicht von einer dieser Klassen abgeleitet, Sie müssen stattdessen HttpContext.Current.Request verwenden.

Verwandte Themen