Веб-служба SoapDocumentMethod OneWay Проблема - PullRequest
0 голосов
/ 30 апреля 2009

Во-первых, я скажу, что я не придумываю это. У меня есть веб-метод, реализованный в файле asmx, как это:

[WebMethod]
[SoapDocumentMethod(OneWay=true)]
public void Method1(INPUT oInput)
{
   // Call SQL stored procedure SP1
   // Call SQL stored procedure SP2
}

Используя SQL Server Profiler, я вижу, что хранимый SP1 вызывается, а SP2 - нет. Если я установлю OneWay = false, будут вызваны как SP1, так и SP2.

Вот странная часть. Я оставляю OneWay = true, но я установил <trace enabled="true"> в файле веб-конфигурации, и SP1 и SP2 вызывают. Нет, правда!

Я постараюсь опубликовать больше примеров кода после того, как доведу его до минимума. В то же время, кто-нибудь знает об ошибке в ASP.NET 3.5 SP1, которая может быть причиной этого?

Charles

Ответы [ 2 ]

1 голос
/ 01 мая 2009

Я нашел свой ответ. Между SP1 и SP2 был некоторый код, который обращается к объекту Context.Current.Request. Комментирование этого исправляет мою проблему.

Вывод? Кажется, объект Request недоступен, если OneWay = true. Странно, но этот параметр <trace enabled="true"> делает объект доступным.

Из документации OneWay свойство :

Не иметь доступа к HttpContext, используя статическое свойство Current. Чтобы получить доступ к HttpContext, извлеките класс, реализующий метод веб-службы XML, из WebService и получите доступ к свойству Context.

0 голосов
/ 30 апреля 2009

Согласно этой статье контекст олицетворения из web.config исчезает, когда OneWay = true. Возможно ли, что безопасность на двух SP немного отличается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...