7
  1. 我们在 IIS 6.0 上部署了一个 .net 4 asp.net 站点。
  2. Default.aspx 被配置为默认文件之一。
  3. 当我们使用以下网址访问网站时

http://testsite

我们期望它渲染

http://testsite/Default.aspx

但相反,我们得到404 Not found error. 当它部署在 .Net 2.0 上时,我们没有遇到这个问题。服务器上唯一改变的是我们使用 .NET 4 而不是 .NET 2.0。

更新:我尝试了以下链接,但没有成功。

让 ASP.NET 4 应用程序在 IIS6 上运行

服务器上的框架版本是 .NET 4 RC。如果我们在服务器上安装最新的 .NET 4 版本会有帮助吗?

更新:问题现已解决。问题是我们使用的第三方上传控件在 Web.Config 中添加了自己的 HttpHandler。此 HttpHandler 在 .NET 4 中开始失败。

4

4 回答 4

28

如果您在 IIS 6 Windows Server 上运行新的 .NET 4 框架,则会出现一些问题。IIS 6 不允许您同时在同一实例中运行多个框架,例如 IIS7,它可以创建针对不同框架的应用程序池。当 IIS 6 在 ASP.NET 2.0(3.0 和 3.5 是超集,而不是框架)下运行时,如果应用程序是 4.0,您将遇到此错误 配置错误描述:在处理服务此请求所需的配置文件期间发生错误. 请查看下面的具体错误详细信息并适当地修改您的配置文件。解析器错误消息:无法识别的属性“targetFramework”。请注意,属性名称区分大小写。

Source Error: 
Line 11:     </configSections> 
Line 12:     <system.web> 
Line 13:         <compilation debug="true" targetFramework="4.0"> 
Line 14:         </compilation> 
Line 15:         <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>   </ system.web>

你有几个选择;

  1. 将 .NET 应用程序降级到 3.5,Visual Studio 2010 使它变得非常容易。只需转到网站属性 -> 应用程序选项卡,然后有一个包含所有框架版本的下拉列表,选择 3.5,您 VS2010 将重新加载项目并修改 web.config,如果您添加了 Web 服务引用,您可能需要删除它们并在 3.5 下重新添加它们
  2. 配置 IIS6 和 web 配置来解决问题。我处理第二部分:

  3. 在 IIS 6 控制台中,您需要右键单击您的项目并单击属性并检查 ASP.Net 选项卡是否选择了 Framework 4。如果没有选择框架 4。

但是由于应用程序池,您仍然可能面临同样的错误;对于两个不同的框架 Web 应用程序,您可能拥有相同的应用程序池。IIS 6 不允许您在同一实例中同时运行多个框架(意味着单个应用程序池不能用于两个不同的框架),例如 IIS7,它可以创建针对不同框架的应用程序池。

  1. 要解决此问题,您需要创建应用程序池并将此应用程序池分配给您的框架 4 Web 应用程序。要分配应用程序池,请在 IIS 控制台中打开 Web 应用程序的属性部分,然后单击“主目录”选项卡并从下拉列表中选择您之前创建的应用程序池。
  2. 这两个现在可能会在某个时候完全解决您的问题。您可能会收到“404 Page is not found”错误。尽管您现在在开发期间可能会遇到任何问题。
  3. 基本上找不到页面问题是由 IIS6 设置隐藏的其他问题的原因。但是你需要看到真正的原因。您在这里要做的是转到 IIS6 控制台打开“Web 服务扩展节点”,它位于“默认网站”节点的正下方。您将在那里看到整个 ASP.Net 框架列表,默认情况下这些框架可能被禁止,因此请选择 ASP.Net Framework 4 并单击允许按钮。现在浏览您的网站,除了“404 页面未找到”之外,您还会收到其他错误。您可能会收到如下所示的错误:
  4. 提供程序选项中“compilerVersion”属性的值必须为“v4.0”浏览网站时会看到以下错误提供程序选项中“compilerVersion”属性的值必须为“v4.0”或更高版本如果您正在为 .NET Framework 4.0 或更高版本进行编译。要为 .NET Framework 3.5 或更早版本编译此 Web 应用程序,请从 Web.config 文件的元素中删除“targetFramework”属性。要解决此问题,您需要修改您的 Web 配置文件,如下所示:

以前 CompilerVersion 值设置为 v3.5,但我们已经将 targetFranework 更改为 4。因此,根据上面的错误消息,提供程序选项中的“compilerVersion”属性必须是“v4.0”或更高版本,如果您正在编译版本.NET Framework 4.0 或更高版本。

Hence your new setting will be as below:

    <providerOption name="CompilerVersion" value="v3.5"/>

希望这将解决您在 IIS6 上的 ASP.Net 4 迁移和托管问题。

于 2010-07-08T08:30:13.193 回答
3

这是一个更完整的解决方案和解释的链接:

http://johan.driessen.se/archive/2010/04/13/getting-an-asp.net-4-application-to-work-on-iis6.aspx

于 2010-10-05T18:26:32.433 回答
2

检查服务器日志,它们可能会让您更好地了解正在发生的事情。

您可以通过右键单击 IIS 中的网站并转到属性来找到日志文件的路径。然后转到网站选项卡,在“启用日志记录”下单击属性,将显示日志记录属性窗口,其中显示日志文件的路径。

于 2010-05-12T18:09:55.253 回答
0

我认为在 4.0 中,默认页面设置实际上存储在 web.config 中。在 IIS 7.0 中,IIS 读取 web.config 以确定对默认页面执行的操作。我认为 IIS 6.0 没有读取设置。

于 2010-05-12T18:22:40.490 回答