我正在尝试执行一项我认为相对简单的任务。我想从我网站的 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 并单击“编辑”,然后勾选复选框。这样就可以了。谢谢。