web-dev-qa-db-ja.com

C#クラスライブラリのServer.Mappath

ASP.NET WEbsiteのBusinessLayerとして機能するC#クラスライブラリクラスでserver.mappathメソッドを使用する方法

54
Shyju

それを呼び出すことで?

var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");

System.Webアセンブリへの参照を追加してください。

117
Aaron Powell

次のコードを使用してベースパスを取得し、それに必要なパスを追加できます。

string  path = System.AppDomain.CurrentDomain.BaseDirectory;

System.Webを参照して呼び出す必要があります。

  HttpContext.Current.Server.MapPath(...)
7

これを使用してください System.Web.Hosting.HostingEnvironment.MapPath()

HostingEnvironment.MapPath("~/file")

ここで誰もそれを言及していないのはなぜだろう。

4
Mahmoodvcs

これを依存関係として抽象化し、IVirtualPathResolverを作成することもできます。この方法では、サービスクラスはSystem.Webにバインドされず、別のUIテクノロジーでロジックを再利用する場合は、別の実装を作成できます。

4
Tom Miller
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
2
Sachin Panchal

アーキテクチャ上、System.webはビジネスロジックレイヤー(BLL)で参照しないでください。ソリューション構造にBLLを使用して、個別の懸念原則に従うようにしてください。System.Webを参照するのは悪い習慣です。 BLLは、Asp.netコンテキストでロード/実行しないでください。理由により、System.AppDomain.CurrentDomain.BaseDirectoryの代わりにSystem.Web.HttpContext.Current.Server.MapPathの使用を検討する必要があります。

1
CodeSi