【问题标题】:WCF JSON Web service, issues moving from GET to POSTWCF JSON Web 服务,从 GET 到 POST 的问题
【发布时间】:2013-07-02 13:47:51
【问题描述】:

我的 URL 路径组件太长,我正在尝试将方法从 GET 更改为 POST。我遇到了反序列化问题。这是服务

    public class AppUser : IAppUser
{
    //[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "AddShop/{shop}")]
    [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat=WebMessageFormat.Json, UriTemplate = "AddShop")]
    List<fme.AppUserResult> services.IAppUser.AddShop(string shop)
    {
        JavaScriptSerializer jss = new JavaScriptSerializer();
        fme.AppUser oUser = jss.Deserialize<fme.AppUser>(shop);

        return oUser.Add();         
    }       
}

这是请求(如果它少于 260 个字符,它可以与 GET 一起使用)

{"shopCity":"City","shopState":"State","shopPhone":"Phone","shopName":"Name","shopEmail":"Email","shopHours":"Hours","shopZip":"Zip","shopAddress":"Street"}

我也试过

{"shop":{"shopCity":"City","shopState":"State","shopPhone":"Phone","shopName":"Name","shopEmail":"Email","shopHours":"Hours","shopZip":"Zip","shopAddress":"Street"}}

这是错误:

服务器在处理请求时遇到错误。这 异常消息是“反序列化对象时出错 键入 System.String。应来自命名空间“”的结束元素“根”。 从命名空间 ''.' 中找到元素 'shopCity'。查看服务器日志了解更多信息 细节。异常堆栈跟踪是:

【问题讨论】:

    标签: .net wcf web-services asp-classic


    【解决方案1】:

    可能是该方法自动尝试将 json 反序列化为参数的类型。因为它无法将 json 反序列化为 string 类型的对象,所以会出错。尝试将参数类型更改为 fme.AppUser 而不是 string

    [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat=WebMessageFormat.Json, UriTemplate = "AddShop")]
    List<fme.AppUserResult> services.IAppUser.AddShop(fme.AppUser oUser)
    {
        return oUser.Add();         
    }  
    

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 2014-10-30
      • 2012-05-01
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多