【发布时间】:2011-03-28 08:21:30
【问题描述】:
自从安装 SP1 以来,我们在从 JQuery 客户端代码调用 asmx 页面时遇到了问题。
IIS 将 JQuery 后调用指向他的默认 404 页面。
我们对我们的环境进行了角色回溯,以断言此问题是由 SP1 引起的,并且测试证实了这一点。
等待修复@MS
使用的技术:
ASP.Net 4.0 - jQuery - IIS 7.5 - 视窗 2008 R2 SP1
--巴特
代码示例调用(前端):
// Code to load vars...
$.ajax({
type: "POST",
url: "/Handlers/ProductRating.asmx/RateProduct",
data: "{'uniqueId':'" + uniqueId + "','productId':'" + productId + "','points':" + points.toString() + ",'showOwnScore':" + showOwnScore.toString() + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
alert('success');
},
failure: function(msg) {
alert('something went wrong');
}
});
}
代码后端:
[ScriptService]
public class ProductRating : System.Web.Services.WebService
{
[WebMethod(EnableSession=true)]
public RateProductResponse RateProduct(Guid uniqueId, Guid productId, int points, bool showOwnScore)
{
//Implementation
}
快照 1:使用 SP1: http://img812.imageshack.us/i/capture2r.png/
快照 2:没有 SP1: http://img190.imageshack.us/i/capture1qx.png/
【问题讨论】:
-
所以处理程序根本不会被调用?也许有一些默认的安全性或权限随着服务包的安装而改变?似乎很奇怪。唯一想到的是框架 3.5 更改,将
d对象添加到来自 web 服务的 JSON 响应,但这似乎不是您的问题。 -
idd 我确认,处理程序从未调用...
-
你可以直接从网络浏览器点击它吗?
-
"/Handlers/ProductRating.asmx" 可以命中。 "/Handlers/ProductRating.asmx/RateProduct" == 404
-
听起来像是 IIS 配置问题。我敢打赌 SP2 更改了一些禁止此操作的默认安全设置。微软解决安全“问题”的一般方法似乎是禁用过去默认启用的东西......
标签: asp.net iis-7 windows-server-2008-r2