路径重写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。

你有什么症状?