我使用HTTP PUT和DELETE我的ASP.NET MVC3应用.当我在本地运行时,每件事都能正常工作; 但是当我将应用程序发布到服务器时,这些方法不起作用.
是否有任何特殊设置可以使Web服务器支持PUT和DELETE请求?我正在使用IIS 7.5的共享主机.
更新:
我启用PUT并DELETE请求IIS manager.PUT命令工作正常.但DELETE仍然行不通.我创建请求jQuery:
我在这个页面:
http://domain.com/dashboard/edit-site/103323/links/
Run Code Online (Sandbox Code Playgroud)
我的ajax电话是:
$.ajax({
// url: same as page-url,
cache: false,
type: 'DELETE',
data: { linkid: $(link).data("linkid") },
beforeSend: function () {
// doing something in UI
},
complete: function () {
// doing something in UI
},
success: function (data) {
// doing something in UI
},
error: function () { …Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET webmethod的以下jQuery帖子:
$.ajax({
type: "POST",
url: "AjaxWebMethods.aspx/UpdNote",
contentType: "application/json; charset=utf-8",
data: "{'ID' : '" + id + "', 'note' : '" + note + "' }",
dataType: "json",
success: UpdNote_Success,
error: AjaxError
});
Run Code Online (Sandbox Code Playgroud)
并声明了Web方法:
[System.Web.Services.WebMethod(enableSession: true)]
public static int UpdNote(int ID, string note) {
// business logic that eventually returns a number, but simplifying
// ... for the sake of brevity
int retNum = 99;
return retNum;
}
Run Code Online (Sandbox Code Playgroud)
jQuery帖子和Web方法在Windows Authenticated环境中都很棒(即 - 用户通过LDAP进行身份验证).但是,我最近不得不将网站移动到使用RSA(双因素身份验证,引脚和令牌代码)的服务器,以便对用户进行身份验证以获取对该网站的访问权限.而我现在看到的是我所有的jQuery帖子都返回"405错误".
很明显,我想到了跨站点请求,但这些都不会发生在这里.所有jQuery AJAX帖子都使用在AjaxWebMethods.aspx中声明的Web方法,该页面驻留在站点自己的域中.
在此先感谢您的任何帮助或建议!
编辑:
在IE8中使用Fiddler为我提供了更多信息.它返回的错误代码仍然是405,但服务器错误更具描述性.服务器错误是"不允许使用用于访问路径'/AjaxWebMethods.aspx/UpdNote'的HTTP谓词POST."
我确实尝试将ajax请求的类型参数更改为GET,但我得到的是404(无法找到资源).
此外,忘了提到这是通过SSL(虽然我不认为这会有所作为).
编辑: …