0

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 型のオブジェクトの逆シリアル化中にエラーが発生しました。名前空間 '' の終了要素 'root' が必要です。名前空間「.」から要素「shopCity」が見つかりました。詳細については、サーバー ログを参照してください。例外スタック トレースは次のとおりです。

4

1 に答える 1