c#webservice返回错误

时间:2017-02-03 10:37:04

标签: c# json web-services

我需要一些帮助。请对我温柔,我不是专家 - 但是。

问题是我试图通过JSON从客户端(浏览器)向服务器(webservice)发送数据。 当我在Fiddler中观察POST数据时,我可以看到我发送的JSON。这是有效的(测试过)。 但是我的webservice,(当我手动测试然后我得到返回OK),返回以下内容:“{”消息“:”处理请求时出错。“,”StackTrace“:”“,”ExceptionType“:” “}”

不幸的是它只供内部使用,因此我无法为您发布网络服务。

有人可以向我解释什么是错的?

1。)Javascript代码:

<script>
  var markers = "{param1:1, param2:\"test\"}";

    $.ajax({
        type: "POST",
        url: "http://xxx.xxx.xxx.xxx/site/util.asmx/CreateMarkers",
        // The key needs to match your method's input parameter (case-sensitive).
        data: JSON.stringify({ Markers: markers }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) { alert(data); },
        failure: function (errMsg) {
            alert(errMsg);
        }
       });
</script>

2。)asmx代码

<%@ WebService Language="C#" Class="site.Util" %>
using System;
using System.Web.Services;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Services;

namespace site{

[WebService(Namespace="http://xxx.xxx.xxx.xxx/site/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Util: WebService
{    
  [WebMethod]
  [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
  public string CreateMarkers(int param1, string param2)
  {
    return "OK";
  }
}

2 个答案:

答案 0 :(得分:1)

尝试格式化发送的数据以匹配Web服务方法

<script>
    var markers = {param1:1, param2:"test"}; //<-- format the model

    $.ajax({
        type: "POST",
        url: "http://xxx.xxx.xxx.xxx/site/util.asmx/CreateMarkers",
        // The key needs to match your method's input parameter (case-sensitive).
        data: JSON.stringify(markers),  //<-- just send the markers
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) { alert(data); },
        failure: function (errMsg) {
            alert(errMsg);
        }
   });
</script>

答案 1 :(得分:0)

我遇到了同样的问题,并在web.config中解决了这个问题:

<customErrors mode="Off" />

进行此更改之后,将正确填充Message,ExceptionType和Stack跟踪,而不是标准的“处理请求时出错”。在mode = on时会返回所有异常的消息,对于调试或报告不是很有帮助。