WCF -“遇到意外的字符'c'。”

Posted

技术标签:

【中文标题】WCF -“遇到意外的字符\'c\'。”【英文标题】:WCF - "Encountered unexpected character 'c'."WCF -“遇到意外的字符'c'。” 【发布时间】:2011-01-29 20:58:51 【问题描述】:

我正在尝试做一些我认为很简单的事情。我需要创建一个可以通过 JQuery 发布到的 WCF 服务。我的 WCF 服务中有一个操作,定义如下:

[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json)]
public string SendMessage(string message, int urgency)

  try
  
    // Do stuff
    return "1";  // 1 represents success
  
  catch (Exception)
  
    return "0";
  

然后我尝试通过 JQuery 从 ASP.NET 页面访问此操作。我访问此操作的 JQuery 代码如下所示:

function sendMessage(message) 
  $.ajax(
    url: "/resources/services/myService.svc/SendMessage",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    data: ( message: message, urgency: '1' ),
    dataType: "json",
    success: function (data) 
      alert("here!");
    ,
    error: function (req, msg, obj) 
      alert("error: " + req.responseText);
    
  );

当我执行这个脚本时,错误处理程序被触发。在其中,我收到一条错误消息:

“遇到了意外的字符'c'。”

此消息包含在长堆栈跟踪中。我的问题是,我做错了什么?我收到了其他帖子,例如这个 (How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?),但运气不佳。如何让这种基本交互发挥作用?

谢谢!

【问题讨论】:

我认为您传递的参数不正确。请看以下页面:3 mistakes to avoid when using jQuery with ASP.NET AJAX 我目前无法访问该网站 - 它说了什么? 【参考方案1】:

我认为您必须在请求中对您的 json-data 进行字符串化。更多信息here。您可能还想解析传入的响应数据,因为它会被字符串化作为回报。可以找到适合该任务的通用库here。

例如:data: ' message: "message", urgency: "1" ',

【讨论】:

我遇到了同样的问题,结果你不应该将 $.ajax 方法中的数据作为 json 对象传递,而是作为字符串传递.. maets 的答案是正确的。

以上是关于WCF -“遇到意外的字符'c'。”的主要内容,如果未能解决你的问题,请参考以下文章

WCF学习大全

WCF 服务、WCF RIA 服务和 WCF 数据服务之间的区别

WCF / WCF 数据服务 / WCF RIA 服务

无废话WCF系列教程 -- 李林峰

WCF 一步一步 发布 WCF服务 到 IIS (图)

WCF入门教程三[WCF的宿主]