无法添加对System.Web.Hosting的引用

我正在将Web应用程序从VB迁移到C#。 我还在VS2013中升级到了Update 3。 Hosting课程有变化吗? 我使用Hosting.HostingEnvironment.MapPath收到错误,我甚至无法添加对System.Web.Hosting的引用,因为它无处可寻。 当我尝试在添加引用时搜索程序集时,使用整个命名空间即System.Web.Hosting ,它不返回任何结果。

我在类中使用了using语句,并且它没有变灰,这意味着它被用于某些东西,但是代码不喜欢Hosting.HostingEnvironment中的Hosting ,因为它是眩目的红色。 我甚至没有在intellisense中获得Hosting类,该项目引用了System.Web

没有Hosting课程。 相反,您需要HostingEnvironment类:

 HostingEnvironment.MapPath("~/Hello.txt"); 

完整类型的HostingEnvironmentSystem.Web.Hosting.HostingEnvironment ,因此您需要using System.Web.Hosting; 文件中的子句,或使用全名。

但更重要的是,如果您正在制作Web应用程序,那么您很可能不想使用HostingEnvironment 。 你应该总是有一个例如HttpContextPage / Control的实例,它可以让你访问Server.MapPath ,这应该是首选的。

至于引用, System.Web.Hosting命名空间存在于System.Web.dll ,所以只要确保你有一个对它的引用,你应该没问题。

由于您是从VB迁移它,我认为冲突是由VB对命名空间的不同处理引起的。 在C#中,你不能只这样做:

 using System.Web; Hosting.HostingEnvironment.DoWhatever(); 

使用命名空间时,要么使用包含命名空间的完整类型名称,要么在确切的命名空间和类型上使用using。 将两者结合起来并不是很有效。

我有同样的问题,不是发布的内容。 我在一个单独的(模型)项目中查看库中的代码。 在我使用的库项目中,没有引用System.Web。

棘手的部分是System.Web.Http被引用,所以找到了System.Web命名空间,所以语句using System.Web; 编译好了。

省下一些麻烦和心痛,请按解决方案资源管理器中的“与活动文档同步”按钮,如本答案所示。 https://stackoverflow.com/a/30517179/149884

您是否尝试使用System.Web中的Server.MapPath ?

我认为您不能使用.NET客户端配置文件来构建Web应用程序?

无论如何,那边。 您发现命名空间往往会在不同的程序集中重用。 特别是在框架组件中,即使它们支持不同的技术,它们也相信某些类在概念上属于一体。

我不确定我解释得那么好,但是拿这个例子。 mscorlib,System,System.Net,System.Core和System.Numerics中有一个System命名空间。 此外,System.Web可能会显示在System.Web.Http或System.Web本身,以及其他类似System.Web.Abstractions,System.Web.Optimization等。因此只是尝试使用using语句来辨别一个特定class级来自的集会真的会让你失望。

System.Web.Hosting命名空间中的典型类位于框架程序集System.Web.dll中。 微软一直试图不再强调直接使用System.Web.dll来支持Katana / Kestrel的更多模块化实现。

话虽如此,请确保您的项目直接引用System.Web.dll。 要使用所需的类,请使用其完整名称来引用它,即System.Web.Hosting.HostingEnvironment。 或者using System.Web.Hosting; 在.cs文件的开头。

可以在当前类中具有名为HostingEnvironment的属性,或者在另一个名为HostingEnvironment的程序集中具有来自另一个名称空间的类。 在这种情况下,您可能需要完整指定类名称或者提供一个名字对象以便于参考并减少键入。

例如,您可以在文件的开头添加:

 using HostEnv = System.Web.Hosting.HostingEnvironment; 

然后在代码正文的某处,你可以参考它:

 var appHost = HostEnv.ApplicationHost; 

这有帮助吗?

对于您要解决的特定方案,您可以这样做:

 var resolvedPath = HostEnv.MapPath(pathToMap); 

从客户端更改您的库配置文件。

更改客户档案