【问题标题】:Nerd Dinner returns 404s for all sub-pagesNerd Dinner 为所有子页面返回 404
【发布时间】:2009-08-13 18:27:39
【问题描述】:

我刚买了一台新的 Windows Server 2003 机器,我一直在尝试让 Ne​​rd Dinner 安装它。服务器已经有 .NET 3.5 SP1、ASP .NET MVC 等。

当我通过 FTP 将 Nerd Dinner 上传到主网页的子目录时,当我转到站点中除根目录之外的任何页面时,我都会收到 404,并且主页不会显示地图。

例如,当我转到 about 页面时,我得到以下 IIS 日志条目:

2009-08-13 17:56:10 128.200.123.118 GET /nerddinner/Home/关于 - 80 - 128.200.123.89 Mozilla/4.0+(兼容;+MSIE+8.0<snip>) 404 0 3

我非常困惑,因为这是 Codeplex 新下载和编译的 Nerd Dinner 副本。

如果有帮助,这里有一条来自尝试获取地图 JavaScript 失败的日志条目(注意完全没有“/nerddinner”):

2009-08-13 18:03:05 128.200.123.118 GET /Scripts/Map.js - 80 - 128.200.123.89 Mozilla/4.0+(兼容;+MSIE+8.0<snip>)404 0 3

我有一种强烈的感觉,我应该能够在 asax.cs 文件中解决这个问题,但即使在前面附加了“nerddinner/”之后,我也无法让它正常工作。

对正在发生的事情有什么想法吗?

编辑:我将它上传到 web 文件夹的根目录,然后 404s 继续。

编辑 2:感谢您的建议。我按照说明进行操作,现在我没有收到 404。但是,还有两个主要问题:

  1. 脚本和内容文件夹未正确映​​射。我对这些文件夹中的文件的所有引用都得到 404。
  2. 我根本看不到晚餐。我明白了:

说明:处理此请求所需的配置文件时出错。请查看下面的具体错误详情并适当修改您的配置文件。

还有一条红色的行,上面写着"<connectionStrings configSource="ConnectionStrings.config" />"。除了服务器上不存在ConnectionStrings.config,所以根据VS它不是一个重要的文件,因此,我不知道错误是什么指的是。

(快速搜索我的本地硬盘会发现一个 ConnectionStrings.config 文件,其中没有任何内容)

编辑 3:

现在我想当我去查看晚餐时,我得到了相当于 SQL Server 404...

与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

帮助其他人在 IIS6 上运行 ASP .NET MVC 的总结,尤其是 Nerd Dinner:

  1. IIS 6 可能会向您抛出大量 404,因为它不理解文件不能有扩展名。要解决这个问题,请按照Phil Haack's blog post 中的步骤操作。
  2. ASP .NET MVC URL 重写并不神奇。它只重写通过代码管道传输的 URL。对脚本、图像、数据库、直接链接(也称为 href 标记;不是动态生成的标记)等的引用不会根据应用程序的目录重新映射。 对于 Nerd Dinner 应用程序,浏览页面并在对这些引用的引用前面添加“/nerddinner/”。用您的子目录名称替换“nerddinner”。
  3. 获取数据库并将其附加到服务器上的 SQL Server(或 SQL Server Express)。将网络用户添加到具有读/写角色的数据库中。
  4. 为您的设置填写正确的连接字符串。就我而言,我通过 IP 地址引用服务器并使用 SQL Server 2005,所以我的连接字符串是:

    <add name="NerdDinnerConnectionString" connectionString="Data Source=128.200.123.118; Initial Catalog=NerdDinner; Integrated Security=SSPI" providerName="System.Data.SqlClient.SqlConnection"/>

【问题讨论】:

标签: c# asp.net asp.net-mvc nerddinner


【解决方案1】:

您是否在 IIS6 上运行它?如果是,则需要修补路由表以考虑 IIS6 或多或少需要的 .ASPX 扩展名。

Phil Haack 有一个很好的演练来解释这个过程。他还解释了不使用 .ASPX 扩展名的方法:
http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

【讨论】:

    【解决方案2】:

    脚本和内容文件夹不 正确映射。我得到了404 对那些里面的文件的引用 文件夹。

    在 ASP.NET 中,MVC 文件不会像在 ASP.NET 中那样一对一地映射到 URL。相反,路由表中的匹配将 GET 或 POST 请求从浏览器转移到您的一个控制器中的控制器方法。从那里,控制器决定(显式或按约定)显示哪个视图。

    在执行过程中发生错误 处理配置文件 需要为该请求提供服务。 请查看具体错误 下面的详细信息并修改您的 配置文件。

    ConnectionStrings.config 需要存在于服务器上,因为它在 web.config 中被引用。它是一个包含文件,因此其中不一定有任何内容。但如果它被引用,则需要将其包含在服务器上,因此只需将其与您的 FTP 程序一起复制到那里即可。

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 2017-09-26
      • 2021-03-31
      相关资源
      最近更新 更多