powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Зависает на ответе, вызов POST из метода WCF сервиса
2 сообщений из 2, страница 1 из 1
Зависает на ответе, вызов POST из метода WCF сервиса
    #37678281
MIKakaHunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похожая проблема обсуждалась здесь: http://www.sql.ru/forum/actualthread.aspx?tid=880177&pg=1&mid=11279238#11279238

Добрый день, коллеги.
У меня такая же проблема возникла с WCF сервисом.
Есть веб-метод из которого нужно POST-ом вызвать CGI скрипт по определенному url-у и передать параметры, соответственно получить ответ. Все прекрасно работает, если это WinForm или WPF клиент, на стороне веб-сервиса зависает на ответе, вываливает таймаут. Предположил, что проблема с правами пользователя, т.к. служба по дефолту работает от имени NetworkService.
Использовал принудительную имперсонацию, код отсюда: http://msdn.microsoft.com/en-us/library/ff647404.aspx
Вызов кода веб-метода делал от имени доменной учетки с правами админа, теже грабли.
Есть подозрение, что причина как то связана с потоками.
...
Рейтинг: 0 / 0
Зависает на ответе, вызов POST из метода WCF сервиса
    #37679358
MIKakaHunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выяснилась причина таймаута.
Просто админ на тестовом веб-сервере настроил инет через прокси. :)
Как говорится:
"Многие вещи нам непонятны не от того, что наши понятия слабы, а от того, что данные вещи не входят в круг наших понятий." (с) не мой.

пришлось выдернуть из реестра адрес прокси, прописанный в системе, т.к. то что советуют на msdn:
http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.proxy.aspx
Код: c#
1.
IWebProxy proxy = myWebRequest.Proxy;


всегда в моем случае возвращало прокси, даже если в IE он отключен.
вот функция:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
string GetEnabledProxy()
{
    string res = "";
    try
    {
        RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
        object proxyEnable = registry.GetValue("ProxyEnable");
        object proxyAddr = registry.GetValue("ProxyServer");
        int inProxyEnable = 0;
        if (Int32.TryParse(proxyEnable.ToString(), out inProxyEnable))
            if (inProxyEnable == 1) res = proxyAddr.ToString();                
    }
    catch (Exception)
    {              
    }
    return res;
}


и соответственно добавил в код POST-метода следующий фрагмент:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
string proxy = GetEnabledProxy();                
if (proxy != "")
{
    MessageBox.Show("Proxy: " + proxy);
    IWebProxy iProxy = request.Proxy;                    
    WebProxy myProxy = new WebProxy();
    Uri newUri = iProxy.GetProxy(request.RequestUri);
    myProxy.Address = newUri;
    myProxy.Credentials = new NetworkCredential("user", "password");
    request.Proxy = myProxy;
}
else
{
    MessageBox.Show("Proxy is null; no proxy will be used");
}    



Теперь работает и с прокси и без него.
Еще бы неплохо выдернуть имя пользователя и пароль из текущего контекста пользователя, так же как это предполагаю, делает IE.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Зависает на ответе, вызов POST из метода WCF сервиса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]