WCF不解码WebGet方法上的参数

时间:2013-09-27 03:43:48

标签: c# wcf

我有一个.NET 4.5 WCF服务。在我的localhost和另一台服务器上,方法参数正确传递。但是,在不同的服务器上,方法参数仍然是编码的。

例如,如果我使用以下内容:

var factory = new ChannelFactory<MyService.Interface.ILeadService>("MyService", new EndpointAddress(url));
var channel = factory.CreateChannel();
using (new OperationContextScope((IContextChannel)channel))
{
    channel.AddCalendarItem("09/26/2013 7:40PM");
}

要调用此方法:

[OperationContract]
[WebGet(UriTemplate = "AddCalendarItem/?startDate={startDate}",
ResponseFormat = WebMessageFormat.Json)]
AddCalendarItemResponse AddCalendarItem(string startDate);

在我的本地(Windows 8)计算机和一台服务器(Windows Server 2008 R2)上,我得到了预期的字符串:“2013年9月26日下午7:40”

但是,在具有相同代码和配置的一台服务器(Windows Server 2012)上,我得到:“09%2f26%2f2013 9%3a30PM”

我无法判断调用者或被调用者是否存在问题。

知道什么可能导致解码不足? 频道可以进行双重编码吗?

1 个答案:

答案 0 :(得分:0)

那里的铅是什么?

立即尝试,它应该可行,

  [OperationContract]
        [WebGet(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json,
         UriTemplate = "/AddCalendarItem/{token}?startDate={startDate}")]
        AddCalendarItemResponse AddCalendarItem(string token, string startDate);