我正在将一个web应用程序从VB迁移到C#。我还升级到VS2013中的更新3。Hosting类有更改吗?我在使用Hosting.HostingEnvironment.MapPath时出错,甚至无法添加对System.Web.Hosting的引用,因为它在哪里都找不到。当我尝试在添加引用时搜索程序集时,使用整个命名空间(即System.Web.Hosting ),它将不返回结果。
我在类中有using语句,它不是灰色的,这意味着它被用于某些东西,但是代码不喜欢Hosting中的Hosting.HostingEnvironment,因为它是红色的。我甚至没有在intellisense中获得Hosting类,而且该项目有一个对System.Web的引用
发布于 2014-10-07 13:10:57
没有Hosting类。相反,您需要HostingEnvironment类:
HostingEnvironment.MapPath("~/Hello.txt");HostingEnvironment的完整类型是System.Web.Hosting.HostingEnvironment,因此您需要在文件中使用using System.Web.Hosting;子句,或者使用全名。
然而,更重要的是,如果您正在开发一个web应用程序,您很可能无论如何都不想使用HostingEnvironment。您应该始终有一个例如HttpContext或Page / Control的实例,这使您可以访问Server.MapPath,这应该是首选的。
至于引用,System.Web.Hosting名称空间位于System.Web.dll中,所以只需确保您有对该引用的引用,那么您应该会很好。
由于您是从VB迁移的,所以我假设这种冲突是由VB对名称空间的不同处理引起的。在C#中,您不能这样做:
using System.Web;
Hosting.HostingEnvironment.DoWhatever();在使用命名空间时,要么使用包含名称空间的完整类型名称,要么对确切的命名空间和类型使用using。把这两者结合起来不太管用。
发布于 2016-07-06 20:51:11
我也有过同样的问题,不是什么张贴的东西。我在一个单独的(模型)项目中查看库中的代码。在我使用的库项目中,没有引用System.Web。
棘手的部分是System.Web.Http被引用了,所以找到了System.Web命名空间,所以using System.Web;语句编译得很好。
省去麻烦和心痛,始终按下解决方案资源管理器中的“同步与活动文档”按钮,如本答案所示。https://stackoverflow.com/a/30517179/149884
发布于 2014-10-07 13:09:57
你试过用Server.MapPath在System.Web吗?
https://stackoverflow.com/questions/26236721
复制相似问题