路径重写WCF服务
问题描述:
让我们假设我有简单的WCF服务定义路径重写WCF服务
[OperationContract, WebInvoke(Method = "GET", UriTemplate = "*")]
string TestMe()
和简单的HTTP模块来重写URL
context.BeginRequest += (s,e)=>{
var ctx = HttpContext.Current;
var method = ctx.Request.AppRelativeCurrentExecutionFilePath.RemoveFirst("~/");
var args = ctx.Request.QueryString.ToString();
ctx.RewritePath("~/MyService.svc", method, args, false);
}
所以每次调用该方法将被翻译进入带参数的TestMe方法
现在我想在这里发布整个请求,
[OperationContract, WebInvoke(Method = "POST", UriTemplate = "*")]
string TestMe (Stream request)
对于这个调用RewritePath没有通过服务请求者发布的流,我无法找到解决方法。如何重写url并保持原始请求字节数组被传输?
答
在处理POST请求期间,URL重写不会影响HTTP请求的主体。
另一方面,查询字符串是URL的一部分,您似乎已将它正确地转移到新的URL。
你有什么症状?