为什么system.web不可用?

时间:2014-02-06 21:50:06

标签: c# asp.net asp.net-mvc-3 system.web

希望使用:

fileMap.ExeConfigFilename = System.Web.HttpContext.Current.Server.MapPath("~/Synchroniser/ConvertXML/App.config");

在我的项目中。 .HttpContext正在标记,因为命名空间不存在。 我查看了一个旧的项目,它的工作原理并将相同的ref文件导入我的引用,但它标记为黄色的解释标记,也尝试添加

    using System.Web.Http;
using System.Web;

但没有快乐,任何想法?

2 个答案:

答案 0 :(得分:1)

确保您的项目的目标是完整的.NET 4.0而不是客户端配置文件:

enter image description here

现在,您需要将System.Web程序集和using System.Web的引用添加到文件中:

enter image description here

所有这些,请注意,这是一个绝对可恶的事情。您的类库(a.k.a DAL,BAL,等等......)应该完全不了解任何HttpContext。这纯粹是网络内容,应该只在它所属的地方生活 - 到网络层。

您的DAL,BAL,......不应该进行任何System.Web.HttpContext.Current.Server.MapPath来电。它应该只是将文件名作为参数。计算此文件名的方式完全是调用者的责任。因此,如果调用者是Web应用程序,则可以使用MapPath方法。如果调用者是桌面应用程序,则应使用其他内容。如果它是Windows Phone应用程序,它应该使用另一件事。看看你的DAL,BAL,...是如何与呼叫者无关,而且更可重复使用?

答案 1 :(得分:0)

HttpContext.Current.Server.MapPath应该被HostingEnvironment.MapPath和ref System.Web.Hosting取代,以避免使用httpcontext