我正在将ASP.NET项目从.NET 3.5迁移到.NET 4。
如果我在web.dev下调试(即在Visual Studio [2010]中),一切都很好用,但是当我尝试在IIS7 [.5]下运行时,调试器无法附加。直接在IIS下运行项目只会导致它返回403s(没有子代码,因此没有多少帮助)。
我通过获取当前(和工作!).NET 3.5站点并将AppPool更改为具有.NET 4运行时的站点来设置站点。我已经确认所有文件权限都是Kosher(至少从.NET 3.5的角度来看)。我觉得我在这里错过了一些配置步骤......
尝试连接调试器时的错误消息只是“无法在Web服务器上启动调试”。这不是世界上最有用的错误信息。
直接附加到关联的w3wp进程强烈建议应用程序永远不会成功启动。
基本问题是,对于在IIS下运行的项目,我如何影响从.NET 3.5到.NET 4的这种更改?
答案 0 :(得分:4)
想出来。
尚未为IIS安装.NET 4。不要问我为什么会这样。
在Visual Studio命令提示符(我的情况下为x64)下的.NET 4安装目录(\ Windows \ Frameworks \ v4.0.xxxx)中运行asp_net_regiis -i
解决了这个问题。
答案 1 :(得分:2)
您不能在同一个应用程序池中混用.NET框架。因此,请确保只有.NET 4.0网站位于您的应用程序池中。
请记住将网站/虚拟目录也设置为.NET 4。
答案 2 :(得分:1)
IIS7在“网站”中有两个选项。在IIS6中,您将在IIS7中添加一个子应用程序作为“添加虚拟目录...”,这样就迫使您保持与网站相同的AppPool和.NET框架版本。
但是,IIS7现在有一个“添加应用程序...”选项,它允许您基本上执行IIS6允许的操作,以便您可以明确声明AppPool运行,它可以与父网站不同。 / p>
答案 3 :(得分:0)
从头开始一个新项目,然后在那里使用web.config。复制所有3.5页,然后手动移动您需要的web.config元素。页面本身不需要任何转换,它们都在web.config中。 .net 4.0页面的web.config实际上要小得多,因为.net 4.0不仅仅是.net 2.0的扩展,就像3.5一样。