我收到一条错误,指出:“不允许使用 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 to不允许访问路径“/foo”。”将会被抛出。
但是,如果用户访问“http://localhost/foo/default.aspx”然后提交表单,则一切都会顺利(即使 ACTION 参数留空)。
注意:如果我将 .aspx (default.aspx) 页面的名称显式添加到 ACTION 参数中,则不会引发任何错误。因此,无论用户是否在 URL 中定义文件名,下面的示例都可以正常工作。
<form action="default.aspx" method="post">
<input type="submit" />
</form>
我很好奇为什么会抛出错误,所以我读了 Microsoft KB这表明
This problem occurs because a client makes an HTTP request by sending the POST method to a static HTML page. Static HTML pages do not support the POST method.
我认为解释的核心是有道理的,但是就我而言,我的表单没有被发送到静态 html 页面 - 它被发送到 html 表单所在的同一页面(default.aspx)。 .这对于留空的 ACTION 参数是隐含的。
是否可以配置 IIS(或其他方式)以允许我们进行表单 POSTing 并将 ACTION 参数保留为空?
最佳答案
检查您的默认文档 - 如果不指定操作,它可能会剥离回 foo/
。如果您有一个静态的默认文档(即:Default.html,而不是 Default.aspx),则可能会导致此问题。
关于asp.net - 不允许使用 HTTP 动词 POST 来访问路径 '[my path]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4610433/