使用URL重写时表单数据不发布

时间:2015-06-05 18:24:43

标签: asp.net forms url-rewriting asp-classic web-config

行。从哪里开始......

我有一个网站。它使用经典的asp在IIS服务器上运行。我在该网站上有表格。

表单工作正常,直到我决定在我的web.config文件中添加一些url重写规则来重定向漂亮的网址。 在这之后,我网站上的表单不会发布数据。它将转到正确的地址,但没有任何内容传递到假设要进行处理的页面。在我正在处理的页面上:

flume-ng

我绝对没有。没有表单字段名称或值。

我需要将哪些内容添加到web.config文件中才能发布数据?而且......更重要的是......我需要在web.config文件中将其添加到哪里?

以下是我的web.config文件https://jsfiddle.net/fcb1wcth/

的文本副本

1 个答案:

答案 0 :(得分:4)

您的web.config包含action=redirect

重定向始终会导致重定向标头发送到浏览器。这会更改浏览器地址栏中的URL,然后浏览器会为新地址发出HTTP GET。使用HTTP GET,不会发送任何表单/发布数据;假设所有参数都在URL查询字符串中。

如果您想避免重定向并使用真正的重写,请将您的web.config更改为使用action=rewrite。使用此方法,没有重定向标头发送回浏览器,浏览器地址栏永远不会更改,IIS只是将当前请求流重定向到其他位置。

有些东西告诉我,这不是你想要的 - 你希望浏览器中的地址栏改变,你希望保留表单/帖子数据。除非你做一些非常不寻常的事,例如,这是不可能的。使用指向新URL的操作呈现包含原始表单/发布请求的临时插页式页面。我不建议这样做。

为什么不在原始页面的HTML中更改表单操作?