2

我似乎遇到了一个非常具体的问题,对于问题的长度表示歉意。

我有一个脚本服务,实际居住在/somepath/service.asmx. 我正在使用 url 重写模块 (UrlRewritingNet v2.0) 来重写来自/service.asmx我的物理位置的调用。该模块使用 .Net 的HttpContext.RewritePath()功能。

我的服务公开了 method dosomething,并且在我的页面上有一个脚本调用:

$.ajax({
  type: "POST",
  url: "/service.asmx/dosomething",
  data: JSON.stringify(inputData),
  contentType: "application/json; charset=utf-8",
  dataType: "json"
});

当我在 IIS 中运行此代码时 - 它返回状态代码200,但当我在 VS 开发服务器上运行此代码时 - 它返回405 Method Not Allowed。来自堆栈跟踪的错误消息是:

"The HTTP verb POST used to access path '/somepath/service.asmx/dosomething' is not allowed."

请注意,在此消息中,路径似乎已正确路由。

有趣的是——我几乎可以肯定这是一个路由问题,因为当我将我的 ajax 调用更改为完整的 url 时/somepath/service.asmx/dosomething——IIS 和 VS 开发服务器都可以正常工作。

任何想法如何避免405?

4

0 回答 0