【发布时间】:2012-03-18 03:17:01
【问题描述】:
我知道有一些问题,但我已经尝试了很多,但我什至无法将我的脚本发送到服务器。这是我目前拥有的:
Javascript
function UpdateSessionUser(user)
{
if (user != null)
{
var targetPage = "http://" + document.location.host + "/Sitefinity/Services/Sandbox/SessionUsers.asmx/UpdateSessionUser";
var dataText = { "jsonUser" : JSON.stringify(user) };
try
{
$.ajax({
type: "POST",
url: targetPage,
data: dataText,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response)
{
alert(response.d);
return true;
},
failure: function (msg)
{
alert(msg);
return false;
}
});
}
catch (err)
{
alert(err);
}
}
}
用户对象示例
Object
BaseID: "fe85149c-71f2-4c61-b7c6-a00300e2f84e"
HasChanged: true
IsReferralReceived: false
IsReferralRequired: true
IsSeatApproved: true
Name: "Miles"
ReferralFromUser: null
ReferralFromUserID: null
ReferralReceivedBy: null
ReferralReceivedByUserID: null
ReferralReceivedOn: "/Date(-62135578800000)/"
RegisteredOn: "1330281960000"
SeatApprovedBy: null
SeatApprovedByUserID: null
SeatApprovedOn: "/Date(-62135578800000)/"
SeatNumber: "2"
SessionID: "d0773d5e-aeeb-4b9c-b606-0a564d6c5845"
UserID: "6af2fd9e-b4b6-4f5a-8e9c-fe7ec154d4e5"
__type: "SandboxClassRegistration.SessionUserField.ClientSessionUser"
C#
[WebMethod]
public bool UpdateSessionUser(object jsonUser)
{
return SessionUserHelper.UpdateSessionUser(new ClientSessionUser(jsonUser));
}
为什么我的 JSON 调用永远不会到达服务器?我在函数的最开始处(返回之前)设置了一个断点,这样我就可以查看 jsonUser 对象参数,但它永远不会在那里。
我得到的只是这个错误:
POST http://localhost:60877/Sitefinity/Services/Sandbox/SessionUsers.asmx/UpdateSessionUser500(内部服务器错误)
--- 更新
这是最终结果(我必须“字符串化”对象,然后发送最终的 dataText)。 webservice方法没有改变
function CallWebServiceToUpdateSessionUser(target, user)
{
var dataText = { "jsonUser": JSON.stringify(user) };
$.ajax({
type: "POST",
url: target,
data: JSON.stringify(dataText),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response)
{
alert(response.d);
return true;
},
failure: function (msg)
{
alert(msg);
return false;
}
});
}
【问题讨论】:
-
500 是服务器错误。您的呼叫确实 到达了服务器。查看应用程序事件日志,查看是否有 ASP.NET 警告显示发生的异常。
-
好电话。我通过 Visual Studio 在本地运行它,我检查了我的 Windows 应用程序日志,当然......那里什么都没有:(
-
确保ASP.NET Health Monitoring 已打开。
<system.web> <healthMonitoring enabled="true"/></system.web> -
你能得到服务吗?在您的浏览器中转到:localhost:60877/Sitefinity/Services/Sandbox/SessionUsers.asmx,如果是,您是否看到列出的 UpdateSessionUser 方法?另外,document.location.host 是否包含端口号?
-
如果对 dataText 进行字符串化,效果会更好吗?我相信我总是传递一个 json 字符串而不是一个对象。
标签: c# json web-services asmx