我收到一个错误,指出:“HTTP动词POST用于访问路径'[我的路径]'是不允许的。”用于访问路径'[我的路径]'的HTTP动词POST不允许
这个错误是由于我正在实现一个使用POST方法的HTML表单元素并且没有在其ACTION参数中显式定义一个.aspx页面的事实而引起的。
例如:
<form action="" method="post">
<input type="submit" />
</form>
上述HTML是上的 “/foo/default.aspx” 的文件。
现在,如果用户将URL指向根目录“foo”而未指定aspx文件(即“http:// localhost/foo”)并提交表单,则会出现错误“The HTTP verb POST used不允许访问路径'/ foo'。“将被抛出。但是,如果用户转到“http://localhost/foo/default.aspx”并提交表单,一切都会好的(即使ACTION参数为空)。
注意:如果我明确将.aspx(default.aspx)页面的名称添加到ACTION参数中,则不会引发错误。所以下面的例子工作正常,无论用户是否在URL中定义文件的名称。
<form action="default.aspx" method="post">
<input type="submit" />
</form>
我好奇,为什么被抛出的错误,所以读出的Microsoft KB,指出发生
此问题,因为客户端 使得通过发送 POST方法的HTTP请求一个静态的HTML页面。 静态HTML页面不支持 POST方法。
我想这个解释的核心是有意义的,但是在我的情况下,我的表单并没有被发送到一个静态html页面 - 它被发送到html表单所在的页面(default.aspx )...这对于保留为空的ACTION参数是隐含的。
是否有可能配置IIS(或其他),这将允许我们做表单发布并保持ACTION参数为空?
我会尽量避免不指定操作。由于浏览器没有发布信息,也没有指定操作(很少),我想你可能会在某些平台/浏览器上遇到奇怪的行为。 – Teson 2011-01-05 23:52:27
是的,你应该总是指定一个动作,即使它回发到同一页面本身。 – 2011-01-06 01:10:05