0

示例消息:login=admin&password=password&TranId=0617759203&TranType=9220

我有一个使用以下方法的 WCF 服务

[OperationContract(Name = "GetSampleMethod")]
        [WebGet(UriTemplate = "GetSampleMethod/inputStr/{data}")]
         string GetSampleMethod(string data);

我只能发送一个字符串 /Service.svc/GetSampleMethod/inputstr/abc作为数据。当我尝试将示例消息作为数据发送时,出现以下错误:

从客户端 (&) 检测到潜在危险的 Request.Path 值。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Web.HttpException:从客户端 (&) 检测到潜在危险的 Request.Path 值。

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[HttpException (0x80004005):从客户端检测到潜在危险的 Request.Path 值 (&)。]
System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +9672068
System.Web.PipelineStepManager.ValidateHelper(HttpContext context) +53

谁能帮我解决这个问题?我如何需要将这种类型的消息作为查询字符串发送?

4

1 回答 1

0

您需要对您在查询字符串中发送的值进行 HTTP 编码。换句话说,您的“&TranId=0617759203”变为(减去空格)“&TranIDTranId=0617759203”,因此可以通过 http 发送。

于 2013-09-04T08:14:30.237 回答