从javascript调用webmethod时,ASP.NET 500内部服务器出错

时间:2015-05-03 08:59:57

标签: javascript c# asp.net ajax

我试图使用AJAX调用webmethod功能但无法获得适当的结果。我搜索了我的问题并找到了许多解决方案,但那些对我没有用。请指导我做错了什么。将不胜感激。

干杯

代码段

 function checkUserNameExists() {

//initialization
var pagePath = window.location.pathname + "/getUsername";
var value = document.getElementById('control_userName').value;
var dataString = "{ 'value':'" + value + "' }";
$.ajax({
    type: "GET",
    url: pagePath,
    data: dataString,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    error:
            function (XMLHttpRequest, textStatus, errorThrown) {

            },
    success:
            function (result) {
                var flag = true;
                if (result != null) {
                    flag = result.d;
                    if (flag == "True") {
                        alert('okay fine you are good');
                    }
                    else {
                        alert('try again');
                    }
                }
            }
});
 }

代码文件背后的方法

    [WebMethod]
    [ScriptMethod(UseHttpGet = true)]
    public string getUsername(string value)
    {
        return "True";
    }

异常

 ExceptionType: "System.InvalidOperationException"
  Message: "An attempt was made to call the method 'getUsername' using a        POST request, which is not allowed."

3 个答案:

答案 0 :(得分:4)

您可能需要在方法声明中添加静态,如下所示

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string getUsername(string value)
{
   return "True";
}

如果不是这种情况,您可以使用F12浏览器 - >网络,然后点击错误消息进行简要查看。

关于报告的问题,get请求的问题,尝试将其发布

答案 1 :(得分:0)

这不是特定于此问题的,但是您可以检查一些事情以更好地了解导致问题的原因。

  • 在“常规”部分中检查状态代码和请求类型 请求标头
  • 如果有任何json错误,请检查响应标题
  • 检查响应以获取消息,堆栈跟踪和异常 类型。
  • 检查标题中的请求有效载荷部分以获取参数 通过。

检查this post以获得更多详细信息。

答案 2 :(得分:0)

就我而言,问题是“数据”字段(均为GET和POST)。作为测试,请从AJAX调用中删除“数据”,并删除Web方法参数(如果可行),则问题出在“数据”字段的格式:

$.ajax({
   type: "GET",
   url: pagePath,
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   ...

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string getUsername()
{
    return "True";
}

一些例子:

data: JSON.stringify({ "parameter": variable })     WORKS
data: JSON.stringify({ parameter: variable })       WORKS
data: '{"parameter": "' + variable + '"}'           WORKS
data: '{parameter: ' + variable + '}'               don't works 
data: JSON.stringify({ 'parameter': 'value' })      WORKS
data: '{"parameter":"value"}'                       WORKS
data: "{'parameter':'value'}"                       WORKS
data: '{parameter:value}'                           don't works
data: {parameter:value}                             don't works
data: {"parameter":"value"}                         don't works
data: {'parameter':'value'}                         don't works