質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top