我有一个jquery帖子,每次尝试执行特定的web方法时都会返回500错误。我已经测试了我的通话记录和我试图调用的实际功能,并且都可以正常工作。我不确定在其他网络方法上未发生此错误时为什么会收到此错误。
我运行过的测试: 1)检查webmethod是否不正确: 我从后面的代码中调用了webmethod,它运行得很好。
2)检查我是否在.post中正确调用了web方法: 我将URL更改为调用其他函数,该函数起作用了。
3)断点: 我放置在所需功能内部的断点不会触发,但是当我使用相同的.post测试其他Web方法时,它们会触发。
Site.js上的内容是什么
$('#result-table').on('click', '.delete-user-button', function () {
//var temp = JSON.stringify($(this).data('userid'));
var obj = {
recordId: $(this).data('userid')
};
$.post({
url: '/svc/webmethods.aspx/Delete_User_Group',
data: JSON.stringify(obj),
dataType: 'json',
contentType: "application/json; charset=utf-8",
})
})
我的webmethod.aspx.vb是什么
<WebMethod()>
Public Shared Function Delete_User_Group(form As String) As BooleanResponse
Try
Dim response As New BooleanResponse()
Dim formFieldList = Get_FormFieldsAsList(form)
Dim RecordId As String = formFieldList.First.value
Dim user As New UserMembership(SiteUtils.DefaultConnectionString)
user.RecordId = RecordId
user.Delete()
If user.IsDeleted Then
response.IsSuccess = True
Else
response.IsSuccess = False
response.Message = "Failed to Delete User"
End If
Dim group As New UserMembership(SiteUtils.DefaultConnectionString)
group.RecordId = RecordId
group.Delete()
If group.IsDeleted And response.IsSuccess = True Then
response.IsSuccess = True
Else
response.IsSuccess = False
response.Message += " Failed to Delete Group"
End If
Return response
Catch ex As Exception
HttpContext.Current.Response.StatusCode = 500
HttpContext.Current.Response.StatusDescription = ex.Message
Return Nothing
End Try
End Function
我希望可以启动Delete_User_Group网络方法,以允许我运行说明。
我收到此错误: 无法加载资源:服务器的状态为500(内部服务器错误)[/ svc / webmethods.aspx / Delete_User_Group]
编辑1: 我更新了代码以删除jquery处理程序中的double stringify。不幸的是,我仍然收到500错误。
编辑2:我进行了更多测试,并能够启动我的网络方法。我通过摆脱传递的参数来做到这一点。
$.post({
url: '/svc/webmethods.aspx/Delete_User_Group',
dataType: 'json',
contentType: "application/json; charset=utf-8"
})
...
Public Shared Function Delete_User_Group() As BooleanResponse
我已经研究了一段时间,无法弄清楚如何正确地将参数传递给我的web方法。对于所有其他网络方法,我一直在做同样的事情,但对于为什么这种方法行不通,我感到很困惑。
答案::终于找到了错误,超级初学者,所以我有点不好意思。
错误是因为我正在使用的.post正在发送一个字段名称为“ recordID”的对象,而Web方法希望该参数以“ form”形式出现
Site.js:
var obj = {
recordId: $(this).data('userid')
};
webmethod.aspx.vb:
Public Shared Function Delete_User_Group(form As String) As BooleanResponse
最后,我将JSON对象字段更改为:
Site.js:
var obj = {
form: $(this).data('userid')
};