webmethod asp.net状态500(内部服务器错误)

时间:2016-03-01 22:24:29

标签: jquery asp.net json

我需要帮助。 我在asp.net中做了一个webmethod,但我总是收到消息“无法加载资源:服务器响应状态为500(内部服务器错误)”

在我的服务器中我有这段代码(抱歉我的代码质量很差但是第一次在c#和asp.net中)

`

public class nLinha
        {
            public string tipo { get; set; }
            public string dataInicial { get; set; }
            public string dataFinal { get; set; }
            public string no { get; set; }
        }

        public class nLinhaResposta
        {
            public string stamp { get; set; }
            public string documento { get; set; }
            public string numero { get; set; }
            public string nData { get; set; }
            public string referencia { get; set; }
            public string designacao { get; set; }
            public string quantidade { get; set; }
            public string vtotal { get; set; }
            public string vunitario { get; set; }
        }

        [WebMethod]

        public static string desenhaTabela(nLinha linha)
        {
            List<nLinhaResposta> resposta = new List<nLinhaResposta>();
            //TDS ou de uma REF ?
            if (linha.tipo != "REF")
            {
                GridView grdDados = new GridView();
                grdDados.DataSource = MyCliente.GetConsumos(linha.no, Convert.ToDateTime(linha.dataInicial), Convert.ToDateTime(linha.dataFinal));
                grdDados.DataBind();

                foreach (GridViewRow row in grdDados.Rows)
                {
                    nLinhaResposta x = new nLinhaResposta();
                    x.stamp = row.Cells[0].Text.ToString().Trim();
                    x.documento = row.Cells[5].Text.ToString().Trim();
                    x.numero = row.Cells[6].Text.ToString().Trim();
                    x.nData = row.Cells[4].Text.ToString().Trim();
                    x.referencia = row.Cells[1].Text.ToString().Trim();
                    x.designacao = row.Cells[2].Text.ToString().Trim();
                    x.quantidade = row.Cells[3].Text.ToString().Trim();
                    x.vtotal = row.Cells[7].Text.ToString().Trim();
                    x.vunitario = row.Cells[8].Text.ToString().Trim();
                    resposta.Add(x);

                }
            }
            else
            {
                GridView grdDados = new GridView();
                grdDados.DataSource = MyCliente.GetConsumos(linha.no, linha.tipo, Convert.ToDateTime(linha.dataInicial), Convert.ToDateTime(linha.dataFinal));
                grdDados.DataBind();

                foreach (GridViewRow row in grdDados.Rows)
                {
                    nLinhaResposta x = new nLinhaResposta();
                    x.stamp = row.Cells[0].Text.ToString().Trim();
                    x.documento = row.Cells[5].Text.ToString().Trim();
                    x.numero = row.Cells[6].Text.ToString().Trim();
                    x.nData = row.Cells[4].Text.ToString().Trim();
                    x.referencia = row.Cells[1].Text.ToString().Trim();
                    x.designacao = row.Cells[2].Text.ToString().Trim();
                    x.quantidade = row.Cells[3].Text.ToString().Trim();
                    x.vtotal = row.Cells[7].Text.ToString().Trim();
                    x.vunitario = row.Cells[8].Text.ToString().Trim();
                    resposta.Add(x);

                }
            }
            JavaScriptSerializer resultado = new JavaScriptSerializer();
            return resultado.Serialize(resposta);

        }

`
and in the client i have this

var obj = {};
obj.tipo = $("#tipo option:selected").val();
var from = $("#dataI").val().split("/");
var dataI = from[2]+"-"+from[0]+"-"+from[1];

var from1 = $("#dataF").val().split("-");
var dataF = from1[2]+"-"+from1[0]+"-"+from1[1];

obj.dataInicial = dataI.toString();
obj.dataFinal = dataF.toString();
obj.no = $("#cliente option:selected").val();

$.ajax(
 {
  url: "verConsumos.aspx/desenhaTabela",
 contentType: 'application/json; charset=utf-8',
  dataType: 'json',
   data: JSON.stringify({ linha: obj }),
    type: "POST",
    success: function (data) {
   console.log(data);
   toastr.success("Sucesso ", "Sucesso", opts);
    },
    erro: function (XMLHttpRequest, textStatus, errorThrown) {
     toastr.error("Erro com a operação", "Erro", opts);
     }
  });

1 个答案:

答案 0 :(得分:0)

public ActionResult desenhaTabela(nLinha linha)
{
    try 
    {
      ....logic here....
      return Json(data, JsonRequestBehavior.AllowGet);
    }
    catch (Exception ex)
    {
        //TODO: log exception
        return new HttpStatusCodeResult(401, ex.Message);
    }
}

您也可以这样返回:

return Content(jsonObject.ToString(), "application/json");

return Content("Your message",...

然后在你的ajax调用中将成功更改为:

 $.ajax({
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: "/someDir/someAjaxControllerMethod",
        data: jStr,
        success: function (json) {
            ...do something...
            var s = JSON.stringify(json);
            alert(s);
        },
        error: function (event) {
            alert(event.statusText);
        }
    });