C#类库中的Server.Mappath

C#类库中的Server.Mappath,c#,server.mappath,C#,Server.mappath,如何在C#class library类中使用server.mappath方法,该类通过调用它充当ASP.NET网站的业务层 var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx"); 确保添加对System.Web程序集的引用。您应该引用System.Web并调用: HttpContext.Current.Server.MapPath(...) 也许您可以将其抽象为一个依赖项并创建一个IVirtual

如何在C#class library类中使用server.mappath方法,该类通过调用它充当ASP.NET网站的业务层

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

确保添加对System.Web程序集的引用。

您应该引用System.Web并调用:

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

也许您可以将其抽象为一个依赖项并创建一个IVirtualPathResolver。这样,您的服务类就不会绑定到System.Web,如果您想在不同的UI技术中重用您的逻辑,您可以创建另一个实现。

您可以使用以下代码获得基本路径,并将所需的路径附加到该实现中

string  path = System.AppDomain.CurrentDomain.BaseDirectory;
用这个


不知道为什么这里没有人提到它。

从架构上讲,System.web不应该在业务逻辑层(BLL)中引用。在解决方案结构中使用BLL以遵循关注点分离原则,因此参考系统。Web是一种不好的做法。BLL不应在Asp.net上下文中加载/运行。因为您应该考虑使用<代码>系统.AppDealEng.CurrnTrame.BaseCudio而不是<代码> St.Web.HutpCurrord.NET.Server。MapPath < /Cult>

我应该说.NETFramework组件在.NETFramework 4中不存在最坏的解决方案!如果我们需要在HTTP上下文之外使用业务层类怎么办?下面是正确的答案。这个答案既不可移植(在web应用程序之外),也不可在单元测试中测试。我同意忍者的观点。您可以使用IOC来注入值,可能是通过一个接口。这与System.Web.HttpContext.Current.Server.MapPath有什么区别?我在两者之间找不到任何具体的东西
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);