【发布时间】:2009-12-28 02:15:38
【问题描述】:
我正在开发一个用 C# .net 编程的网站。它使用一个名为 ADX Studio 的 CMS(早于我在那里的决定),它提供了一种糟糕的 URL 重写形式(据我所知,它通过将 aspx 页面分配为 IIS 中的默认 404 处理程序来工作)。
我有一个 Web 表单,它位于一个重写的 URL 上。我对其进行了编辑,以便 html 表单的操作指向重写后的 URL:
var u = new Uri(Request.RawUrl.Split(new char[1] { ';' }).Last());
userAdminForm.Action = u.PathAndQuery;
(有点丑陋,但基于这些重写 URL 上的 Request.RawUrl 的内容)。
“漂亮”的 URL 是这样的:
http://www.site.com/admin/user/edit/
在我的开发盒 (Windows XP/IIS 5) 上,当我最初尝试像这样 POST 回 URL 时,我收到了 HTTP 405 错误。我通过adding a script mapping so Aspnet_isapi.dll handles all (*) requests 解决了这个问题。在我的开发机器上一切正常。
我只是将我的更改推送到实时服务器(Windows Server 2003 R2 和 IIS 6),然后帖子静默失败。页面刷新,但我的所有逻辑(来自代码中的 IsPostBack 路径)都没有受到影响。没有显示错误,只是不起作用。
如果我删除设置表单的 .Action 的代码,则回发可以工作,但它会发布到与 aspx 文件的物理位置相对应的丑陋 URL,而不是我的页面。
我是否缺少一种简单的方法来完成这项工作?我不想切换 URL 重写方法或任何东西,因为这是一个大型遗留网站,不幸的是非常依赖 ADX Studio,所以我不想做任何会破坏它的事情。
[编辑因为不知何故上面的代码失去了它的code突出显示]
【问题讨论】:
标签: c# .net iis url-rewriting