将 ASP.NET 项目迁移到 .NET 4

6

我正在将一个ASP.NET项目从.NET 3.5迁移到.NET 4。

如果我在web.dev下调试(即在Visual Studio [2010]中),一切都运行得很好,但是一旦我尝试在IIS7[.5]下运行它,调试器就无法附加。在IIS下直接运行该项目只会导致403错误(没有子代码,因此不大有帮助)。

我通过将AppPool更改为具有.NET 4运行时的AppPool来设置网站。我已确认所有文件权限都是合法的(至少从.NET 3.5的角度来看)。我觉得我在这里漏掉了一些配置步骤...

当尝试附加调试器时出现的错误消息只是“无法在Web服务器上启动调试”。这并不是世界上最有用的错误消息。

直接附加到相关的w3wp进程强烈表明应用程序从未成功启动。

基本问题是,我该如何将运行在IIS下的项目从.NET 3.5更改为.NET 4?


我假设你已经将在VS中的项目转换为.NET 4了,是吗? - mxmissile
@mxmissile - 是的,那是一个安全的假设。 :) - Kevin Montrose
4个回答

4

问题已经解决。

为了IIS的目的,.NET 4没有被安装。不要问我为什么会这样。

在Visual Studio命令提示符(我的情况下是x64)下,在.NET 4安装目录(\Windows\Frameworks\v4.0.xxxx)中运行asp_net_regiis -i解决了问题。


2

您不能在同一应用程序池中混合使用不同的.NET框架。因此,请确保您的应用程序池中只有.NET 4.0网站。

还要记得将网站/虚拟目录设置为.NET 4。


1

IIS7在“网站”中有两个选项。在IIS6中,您可以将子应用程序添加为“添加虚拟目录...”,但在IIS7中这样做会强制您保持与网站相同的AppPool和.NET框架版本。

但是,IIS7现在有一个“添加应用程序...”选项,允许您基本上执行IIS6所允许的操作,以便您可以明确指定要运行的AppPool,并且它可以与父网站不同。


0
从头开始启动一个新项目,只需使用web.config。将所有3.5页面复制到其中,并手动移动所需的web.config元素。页面本身不需要进行任何转换,一切都在web.config中。.net 4.0页面的web.config实际上要小得多,因为.net 4.0不仅是像3.5那样的.net 2.0扩展。

web.dev和IIS如何处理web.config有什么不同? - Kevin Montrose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接