【发布时间】:2009-08-13 18:27:39
【问题描述】:
我刚买了一台新的 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's blog post 中的步骤操作。
- 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"/>
【问题讨论】:
-
Windows Server 2003 默认带有 IIS6。你检查过路由表了吗? haacked.com/archive/2008/11/26/…
标签: c# asp.net asp.net-mvc nerddinner