Управление потоками при размещении "application/x-www-form-urlencoded" в WCF
Я отправляю данные в WCF, используя метод, предложенный в Наилучшем способе поддерживать "application/x-www-form-urlencoded" данные публикации с 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.
Очевидно, это происходит из-за того, что потоковое считывающее устройство располагается перед выполнением моей бизнес-логики.
Вопрос будет "правильно ли это распоряжаться?" Должен ли я просто закрыть его вместо этого? Или даже не заморачиваться? Фреймворк все еще нуждается в этом потоке после того, как мой метод завершится, или это все мое, чтобы поиграть?