0

寻找使用:

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

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

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

但没有快乐,有什么想法吗?

4

2 回答 2

1

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

在此处输入图像描述

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

在此处输入图像描述

说了这么多,请注意,这是一件绝对可恶的事情。你的类库(又名 DAL、BAL 等等)应该对任何 HttpContext 完全一无所知。那是纯粹的网络东西,应该只存在于它所属的地方——网络层。

你的 DAL, BAL, ... 不应该打任何System.Web.HttpContext.Current.Server.MapPath电话。它应该只是将文件名作为参数。这个文件名的计算方式完全是调用者的责任。因此,如果调用者是 Web 应用程序,它可以使用该MapPath方法。如果调用者是桌面应用程序,它应该使用其他东西。如果它是一个 Windows Phone 应用程序,它应该使用另一个东西。看看现在你的 DAL、BAL……如何与调用者无关并且更可重用?

于 2014-02-06T21:56:06.233 回答
0

HttpContext.Current.Server.MapPath 应替换为 HostingEnvironment.MapPath 和 ref System.Web.Hosting 以避免使用 httpcontext

于 2014-05-06T13:02:42.477 回答