WCF 未在 WebGet 方法上解码参数
本文关键字:解码 参数 方法 未在 WebGet WCF | 更新日期: 2023-09-27 18:32:55
我有一个.NET 4.5 WCF服务。在我的本地主机和另一台服务器上,方法参数正确传递。但是,在不同的服务器上,方法参数仍保持编码状态。
例如,如果我使用以下:
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) 上,我得到预期的字符串:"09/26/2013 7:40PM"
但是,在一台具有相同代码和配置的服务器(Windows Server 2012)上,我得到:"09%2f26%2f2013 9%3a30PM"
我无法判断问题出在呼叫者还是被呼叫者身上。
知道是什么原因导致缺乏解码吗?通道可以是双重编码吗?
那里的铅是什么?
现在尝试,它应该可以工作,
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/AddCalendarItem/{token}?startDate={startDate}")]
AddCalendarItemResponse AddCalendarItem(string token, string startDate);