IIS6 通配符映射到 ASP.NET - 没有文件扩展名导致 IIS 404

IIS6 通配符映射到 ASP.NET - 没有文件扩展名导致 IIS 404

我正在尝试执行一项我认为相对简单的任务。我想从我网站的 URL 中删除扩展名。我的应用程序中已正确设置了处理和重写 URL - 问题是如果没有扩展名,我无法绕过 IIS 来实际访问我的应用程序。

细节:

我在 Windows Server 2003 上运行 IIS6。我进入了我的应用程序的网站,转到主目录选项卡,单击“配置”,然后将通配符映射添加到以下文件:

c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll

我已验证其与上面应用程序扩展部分中 .ascx 等所使用的相同。

如果我导航到http://mywebsite.com/Blogs结果如下:

HTTP/1.1 404 Not Found
Content-Length: 1635
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Thu, 14 Jan 2010 15:04:49 GMT

这似乎是标准的 IIS 404 消息。如果我导航到http://mywebsite.com/Blogs.aspx我得到了我的 ASP.NET 应用程序....

我该如何解决这个问题?我觉得我已经检查了十几遍,但毫无效果。我肯定忽略了一些显而易见的东西。

更新:以下是我正在使用的 asp.net url 重写器给出的具体说明:

IIS 6.0-Windows 2003 服务器

  • 打开网站/虚拟目录的属性页。
  • 点击“主目录”选项卡
  • 单击“配置”按钮,选择“映射”选项卡
  • 单击“通配符应用程序映射”部分旁边的“插入”
  • 浏览到 aspnet_isapi.dll(通常位于 c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll)
  • 确保未选中“检查文件是否存在”
  • 单击“确定”、“确定”、“确定”关闭并应用更改

更新 2:

我还没有找到解决办法。应用程序似乎没有收到来自 IIS 的请求,还有其他想法吗?

答案1

404 是因为 ASP.NET 未找到名为“Blogs”的文件。它只是说所有文件都应该由 aspnet_isapi.dll 处理(解释)

您需要放置一些东西(自定义路由引擎或 URL 重写器)来将 URL 映射到文件。尝试Helicon 的 ISAPI 重写或者Ionic 的 Isapi 重写

答案2

配置 IIS 时,有两个“检查文件是否存在”选项。其中一个是在您尝试插入时出现的,并且必须保持未选中状态(如上面的原始说明所示)。第二个是在列出所有扩展类型的列表中,选择 .aspx 并单击“编辑”,然后勾选复选框。这样就可以了。谢谢。

相关内容