0

我有 wcf 之类的方法

void finalize(string jsonstring);

我使用像 finalize/{json} 这样的请求 url

但是如果尝试用 json 调用它,它会给出错误的请求原因,例如:等等

如何解决这个问题

这是我用于该方法的代码

        [WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
UriTemplate = "FinalBooking/{BookingJsonString}")]
        public int Finalize(string JsonString)
        {
            int result; // 1 success , 0 faill

            JavaScriptSerializer json_serializer = new JavaScriptSerializer();
            Routess routes =
                   (Routess)json_serializer.DeserializeObject(JsonString);
            using (XEntities context = new XEntities())
            {
                result = context.usp_Final(routes.TypeID, routes.regID, routes.CycleID, routes.DateTime,
                      routes.LocationID, routes.PatID, routes.PO, routes.BTID, routes.DID);



            }

            return result;

        }

    }

数据示例是简单的 JSON 字符串,例如

{"DateTime":"03/09/2012 09:00","CycleID":6,"BTID":31,"DiseaseID":814,"LocID":36,"PatID":13,"PO":1,"TypeID":744,"rID":-1}

此致

4

1 回答 1

0

当您将 JSON 字符串添加到您的 URL 时,您是否对其进行了 URL 编码?如果 URL 是从 C# 创建的,那么您将使用类似HttpServerUtility.UrlEncode()或在 javascript 中的escape()

如果您可以在发送时显示 URL,那将很有帮助。不清楚 URL 是问题还是 WCF 中的问题。


编辑:

查看您发布的代码,我注意到您的 UriTemplate 和您的方法参数名称不匹配:

[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
UriTemplate = "FinalBooking/{BookingJsonString}")]
    public int Finalize(string JsonString)

BookingJsonStringJsonString.

UriTemplate有 2 种绑定模式:“按名称绑定”,名称应该匹配,“按位置绑定”,它忽略名称并仅按参数索引。我似乎找不到有关 WCF WebInvoke 使用哪种模式的任何信息,因此您可能想尝试重命名模板或参数以匹配。

于 2012-09-02T17:31:06.197 回答