我刚买了一台新的 Windows Server 2003 机器,我一直在尝试让 Nerd 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。但是,还有两个主要问题:
- 脚本和内容文件夹未正确映射。我对这些文件夹中的文件的所有引用都得到 404。
我根本看不到晚餐。我得到:
说明:处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详细信息并适当地修改您的配置文件。
和一条红色的行,上面写着"<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:
- IIS 6 可能会向您抛出大量 404,因为它不理解文件可以没有扩展名。要解决这个问题,请按照Phil Haack 的博客文章中的步骤操作。
- ASP .NET MVC URL 重写并不神奇。它只重写通过代码管道传输的 URL。对脚本、图像、数据库、直接链接(也称为 href 标签;不是动态生成的标签)等的引用不会根据应用程序的目录重新映射。对于 Nerd Dinner 应用程序,浏览页面并在对这些引用的引用前添加“/nerddinner/”。用您的子目录名称替换“nerddinner”。
- 获取数据库并将其附加到服务器上的 SQL Server(或 SQL Server Express)。将网络用户添加到具有读/写角色的数据库中。
为您的设置填写正确的连接字符串。就我而言,我通过 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"/>