好的,这听起来可能有点混乱和复杂,所以请耐心等待。
我们编写了一个框架,允许我们定义友好的 URL。如果您浏览任意 URL,IIS 会尝试显示 404 错误(或者,在某些情况下,显示 403;14 或 405)。但是,IIS 已设置为将指向这些特定错误的任何内容发送到 .aspx 文件。这允许我们实现一个 HttpHandler 来处理请求并做一些事情,这包括找到关联的模板,然后执行与之关联的任何内容。
现在,这一切都适用于 IIS 5 和 6,在某种程度上,也适用于 IIS7 - 但有一个问题,当您发布表单时会发生这种情况。
看,当您将表单发布到不存在的 URL 时,IIS 会说“啊,但该 url 不存在”并抛出 405“方法不允许”错误。因为我们告诉 IIS 将这些错误重定向到我们的 .aspx 页面并因此使用我们的 HttpHandler 来处理它,所以这通常不是问题。但是从 IIS7 开始,所有的 POST 信息在被重定向到 405 后都丢失了。所以你不能再做涉及表单的最琐碎的事情了。
为了解决这个问题,我们尝试使用 HttpModule,它保留 POST 数据,但似乎没有在正确的时间(需要时)初始化 Session。我们还尝试对所有请求使用 HttpModule,而不仅仅是命中 404/403;14/405 的丢失请求,但这意味着图像、css、js 等内容正在由 .NET 代码处理,这非常低效。
这让我想到了一个实际的问题:有没有人遇到过这种情况,有没有人有任何建议或知道该怎么做才能让事情恢复正常?到目前为止,有人建议使用微软自己的URL 重写模块。这会帮助解决我们的问题吗?
谢谢。