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

din*_*tom 16 c#

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

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

Lua*_*aan 9

没有Hosting课.相反,你想要这个HostingEnvironment类:

HostingEnvironment.MapPath("~/Hello.txt");
Run Code Online (Sandbox Code Playgroud)

完整类型HostingEnvironmentSystem.Web.Hosting.HostingEnvironment,所以你需要using System.Web.Hosting;在文件中有一个子句,或使用全名.

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

至于引用,System.Web.Hosting命名空间存在System.Web.dll,所以只要确保你有一个参考,你应该没事.

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

using System.Web;

Hosting.HostingEnvironment.DoWhatever();
Run Code Online (Sandbox Code Playgroud)

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