0

2[System.String,System.Int32]\u0027","StackTrace":" at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToType(Object o, Type type, JavaScriptSerializer serializer)\r\n at System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionarySystem.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(オブジェクト ターゲット、IDictionary 2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException

Dictionary を使用して WebMethod に配列を渡すと、

4

1 に答える 1

0

それが webapi の webmethod である場合、リストまたはディクショナリの種類のオブジェクトをメソッドに渡すことはできません。文字列パラメーターを渡すことのみを想定します。このオブジェクトを渡すには、それらを文字列にシリアル化する必要があります。その後、逆シリアル化して元に戻すことができます。その文字列を使用してリストまたは辞書オブジェクト。

コードを使用する Web メソッド:

Dictionary<string,int> objstring = new Dictionary<string,int>
var serializer = new JavaScriptSerializer();
var serializedstring = serializer.Serialize(objstring);

次に、serializedstring をパラメーターに渡します。

webapi メソッドの serializer オブジェクトから deserialize メソッドを呼び出すだけで、逆シリアル化中に同じことを行います。

これがお役に立てば幸いです。

于 2013-02-22T11:47:38.027 に答える