ASP.NET WEbsiteのBusinessLayerとして機能するC#クラスライブラリクラスでserver.mappathメソッドを使用する方法
それを呼び出すことで?
var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");
System.Webアセンブリへの参照を追加してください。
次のコードを使用してベースパスを取得し、それに必要なパスを追加できます。
string path = System.AppDomain.CurrentDomain.BaseDirectory;
System.Webを参照して呼び出す必要があります。
HttpContext.Current.Server.MapPath(...)
これを使用してください System.Web.Hosting.HostingEnvironment.MapPath() 。
HostingEnvironment.MapPath("~/file")
ここで誰もそれを言及していないのはなぜだろう。
これを依存関係として抽象化し、IVirtualPathResolverを作成することもできます。この方法では、サービスクラスはSystem.Webにバインドされず、別のUIテクノロジーでロジックを再利用する場合は、別の実装を作成できます。
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
アーキテクチャ上、System.webはビジネスロジックレイヤー(BLL)で参照しないでください。ソリューション構造にBLLを使用して、個別の懸念原則に従うようにしてください。System.Webを参照するのは悪い習慣です。 BLLは、Asp.netコンテキストでロード/実行しないでください。理由により、System.AppDomain.CurrentDomain.BaseDirectory
の代わりにSystem.Web.HttpContext.Current.Server.MapPath
の使用を検討する必要があります。