将“application / x-www-form-urlencoded”发布到WCF时的流管理

时间:2012-04-26 11:56:26

标签: wcf post stream request dispose

我使用Best way to support "application/x-www-form-urlencoded" post data with WCF?

中建议的方法将数据发布到WCF

我正在关注http://blogs.southworks.net/erossetto/2007/09/03/raw-http-post-with-wcf/中的示例,事情看似很好。但是,一个问题是在请求中管理流。我创建了一个像

这样的辅助方法
    public static NameValueCollection ParsePOSTRequest(Stream input)
    {
        StreamReader sr = new StreamReader(input);
        string s = sr.ReadToEnd();
        sr.Dispose();

        return HttpUtility.ParseQueryString(s);
    }

我在所有方法中调用它,因此我可以更容易地查找参数。现在,当我尝试通过WebOperationContext.Current访问有关请求的信息时,我发现了一个问题。任何属性或方法都会抛出像The System.ServiceModel.Channels.MessageProperties object has been disposed.这样的异常,这显然来自于在执行业务逻辑之前流处理器正在处理的事实。

问题是“处理它是否正确?”我应该只是关闭它吗?或者根本不打算关闭?在我的方法完成后,框架是否仍然需要该流程?或者我的所有人都可以使用它?

0 个答案:

没有答案