我似乎遇到了一个非常具体的问题,对于问题的长度表示歉意。
我有一个脚本服务,实际居住在/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?