2011-01-05 113 views
2

我收到一个错误,指出:“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参数为空?

+0

我会尽量避免不指定操作。由于浏览器没有发布信息,也没有指定操作(很少),我想你可能会在某些平台/浏览器上遇到奇怪的行为。 – Teson 2011-01-05 23:52:27

+0

是的,你应该总是指定一个动作,即使它回发到同一页面本身。 – 2011-01-06 01:10:05

回答

0

自从最初经历这个错误已经过去了一年,我认为我应该在这篇文章中添加一个我不再接收错误的文章。

我不知道是什么修复了这个问题,但我的猜测是,由于在一年内在我的开发机器上实现了一些Windows Update,错误消失了。

我在IIS 7设置中注意到的一件事是“ISAPI.DLL”(在“处理程序映射”部分中)被禁用。我无法弄清楚如何“启用”它以尝试重现问题以显示ISAPI.DLL导致(或相关)的问题。

无论如何,我无法重现当我在HTML Form标签中留下“action”属性为空白时发生的此错误。所以,我的猜测是有一个IIS和/或.NET Framework更新可隐含或明确地修复OP中提到的错误。

+0

我看到这在我的机器上也是禁用的。但我仍然得到错误。你记得哪个更新为你解决了这个问题吗? – user007 2013-07-09 18:42:52

1

尝试使用“./”作为您的操作。

+0

没有运气。不管怎么说,还是要谢谢你。 – Jed 2011-01-06 00:07:53

3

检查您的默认文档 - 无需指定操作,它可能会剥离为foo/。如果您有一个静态的默认文档(即:Default.html,而不是Default.aspx),可能会导致此问题。

+0

我正在建议同样的事情。这听起来像这篇文章将转到一个HTML页面,这将指向/ foo文件夹中的default.htm。 – Flipster 2011-01-06 00:25:02

+0

好的建议。但是,/ foo目录只包含一个文件 - default.aspx。更不用说,我已经配置IIS在任何其他文件名之前检查default.aspx。 – Jed 2011-01-06 15:55:02

0

我有同样的事情发生 - 在表单标签中有action =“”。不知道它是如何在那里。有时当我编辑gridView时,它不会与HTML“同步”。也许这就是发生了什么事。奇怪的。花了我一段时间才找到!

0

的ASP.Net ISAPI DLL被插入的翻译所有(*)网址,所以不得不请按照下列步骤:

  1. 点击网站
  2. 选择属性,然后在虚拟目录选项卡单击配置
  3. 删除ASP.Net ISAPI DLL(C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll)
  4. 重新启动IIS并重试。
0

我在设置自定义HTTP处理程序时没有使用窗体时出现此错误。 您必须让IIS(或VisualStudio中的WebDevServer)知道您使用自己的处理程序处理某些页面。这是通过向web.config文件添加条目来完成的。我可以输入它们,但是生命短暂,太阳落在院子里,所以这里有一个链接 - 但向下滚动到“在IIS中注册自定义HTTP处理程序”。或阅读了整个事情,因为这一切都很好,肉高科技,掘金...

http://msdn.microsoft.com/en-us/library/ms227433%28v=vs.100%29.aspx

希望有所帮助。

相关问题