server.mappath in C#ClassLibrary
-
20-09-2019 - |
質問
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(...)
たぶん、これを依存関係として抽象化し、ivirtualpathResolverを作成することができます。このようにして、サービスクラスはSystem.Webにバインドされません。別のUIテクノロジーでロジックを再利用する場合は、別の実装を作成できます。
これを使って system.web.hosting.hostingenvironment.mappath().
HostingEnvironment.MapPath("~/file")
なぜここで誰も言及しなかったのだろうか。
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
Architectally、System.Webは、ビジネスロジックレイヤー(BLL)に参照しないでください。 bllをソリューション構造に使用して、懸念の原則の別の原則に従うため、system.webは悪い習慣です。 BLLは、ASP.NETコンテキストでロード/実行しないでください。使用を検討する必要がある理由のためです System.AppDomain.CurrentDomain.BaseDirectory
それ以外の System.Web.HttpContext.Current.Server.MapPath
所属していません StackOverflow