【问题标题】:Default.aspx with IIS 6.0 and .Net 4?Default.aspx 与 IIS 6.0 和 .Net 4?
【发布时间】:2011-02-18 18:35:29
【问题描述】:
  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。

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

Getting an ASP.NET 4 application to work on IIS6

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

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

【问题讨论】:

  • 只是为了仔细检查,您通过进入网站属性、“文档”选项卡并将“default.aspx”添加到列表顶部来设置默认文档?说“默认文档”确实听起来像在 IIS 7.0 上
  • @Kellls:我们也可以为 IIS 6.0 设置默认文档。
  • @Amitabh:是的,在 6.0 中设置默认文档是我在之前的评论中概述的过程。我只是说“默认文档”更像是一个 IIS7.0 术语。在 IIS6.0 中,它被标记为“默认内容页面”。我只是想仔细检查一下您使用的是 IIS 6.0。
  • @Amitabh:在您尝试了该链接中的程序后,您是否再次检查了您的日志?在你尝试之前你得到了 404.2 吗?你现在还收到吗?你有别的东西吗?
  • @Kellls:2010-05-13 16:48:30 W3SVC36911924 192.168.1.11 GET / - 90 - 192.168.1.33 Mozilla/4.0+(兼容;+MSIE+7.0;+Windows+NT+ 6.1;+WOW64;+三叉戟/4.4E-302 0 0

标签: asp.net visual-studio-2010 iis-6 asp.net-4.0


【解决方案1】:

使用新的 .NET 4 框架,如果您在 IIS 6 Windows Server 上运行它会出现一些问题。 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 页面未找到”。 尽管您现在可能在开发期间遇到任何问题。
  3. 基本上找不到页面问题是由 IIS6 设置隐藏的其他问题的原因。但是你需要看到真正的原因。您在这里要做的是转到 IIS6 控制台打开“Web 服务扩展节点”,它位于“默认网站”节点的正下方。您将在那里看到整个 ASP.Net 框架列表,默认情况下这些框架可能被禁止,因此请选择 ASP.Net Framework 4 并单击允许按钮。 现在浏览您的网站,除了“404 页面未找到”之外,您还会收到其他错误。您可能会收到如下所示的错误:
  4. 提供程序选项中“compilerVersion”属性的值必须是“v4.0” 浏览网站时您会看到以下错误 如果要为 .NET Framework 4.0 或更高版本进行编译,则提供程序选项中“compilerVersion”属性的值必须为“v4.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 迁移和托管问题。

【讨论】:

  • 感谢您提供宝贵的解决方案。我在 IIS 2.0 配置下托管 .Net4.0 站点时遇到问题。我在默认网站下创建了虚拟目录并将其绑定到一个单独的应用程序池。它的工作!。
  • 这解决了我的问题:“默认情况下这些框架可能被禁止,所以请选择 ASP.Net Framework 4 并单击允许按钮”。谢谢。
  • 你是一个美丽的人,我爱你。我已经尝试修复此问题 5 小时 32 分钟了。
【解决方案2】:

【讨论】:

  • hmmm... 再次查看帖子并意识到发布者在他的更新之一中尝试了此操作。以为我很有帮助,但我只是在重复......无论如何,这个链接对我有用。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2010-12-13
      • 1970-01-01
      • 2022-07-08
      • 2010-10-30
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多