Создал простую Web-слуюбы с методом, просто возвращающим значение true.
При одновременном вызове этого метода с нескольких компов (из нескольких приолжений) на одном проходит, а на остальных возникает NullReferenceException. Как это побороть? Какие-нидь настройки службы?
P>При одновременном вызове этого метода с нескольких компов (из нескольких приолжений) на одном проходит, а на остальных возникает NullReferenceException. Как это побороть? Какие-нидь настройки службы?
Для начала, смотреть, где (в какой строке) возникает исключение. Потом — код в студию, а потом уже будет понятно, куда двигаться.
Re: Одновременный вызов метода Web-службы
От:
Аноним
Дата:
09.06.06 07:23
Оценка:
Исключение возникает непосредвтвенно в строке вызова метода службы на клиенте. Грубо говоря:
WebService ws = new WebService();
bool test = wr.TestConnect(); // вот тут-то все и происходит....
Строка исключения такова:
"The underlying connection was closed: The connection was closed unexpectedly."
Это, скорее всего, уже последствия ошибки, произошедшей на стороне Web-сервиса. Посмотри, вызывается-ли вообще Web-сервис после такой ошибки просто из браузера.
вот что выдается в Исключении если смотреть StackTrace:
at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
даже не знаю что делать
at WindowsApplication.localhost.WebService.TestConnect()
Открываешь в браузере соответствующий файл asmx. и смотришь, что получается.
А по-поводу одновременности. Так вроде никакой особой разницы для IIS'а между Web-сервисом и Web-приложением нет. Поэтому вызов метода Web-сервиса — все равно, что вызов ASP.NET странички.
1. Создал по шаблону в студии веб-службу, создал пустой метод, кот. возвращает просто true. Опубликовал в IIS.
2. Создал по шаблону виндовое приложение, кинул кнопку на форму. Добавил ссылку на веб службу в проект — создал прокси-класс.
запускаем приложение — все нормально.
теперь запускаем 2 экземпляра приложения. при одновременном нажатии (я вставил в метод службы цикл для увеличения времени его выполнения) — возникает исключение.
как от этого исключения избавиться? не спорю — урл надо настраивать, но относительно этого случаю что конкретно вызывает исключение и почему?
>как от этого исключения избавиться? не спорю — урл надо настраивать, но относительно этого случаю что конкретно вызывает исключение и почему?
Надо просто зайти в отладку Web-сервиса и посмотреть где он падает.
Еще ASP.NET обычно пишет в события все исключительные ситуации с описанием стека вызова. Здесь интересен именно стек вызовов Web-сервиса, а не клиентского приложения.
При возникновении исключения через IE, просто выдается сообщение о невозможности загрузить страницу:
"Эта страница сейчас недоступна. Возможно, это вызвано техническими проблемами на веб-узле, или требуется изменение параметров обозревателя."