Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CLR Загрузка веб страниц  [new]
ssa82
Member

Откуда:
Сообщений: 26
Sql server 2014 12.0.5000.0 64x
внешняя написана на VS C#
Написан загрузчик веб страниц.
Подключён.
Работает, но даже при загрузке яндекса может выдать за 1 сек может за 5,а может и ничего не выдать
с ошибкой примерно через 40-50сек.
Есть антивирус НОД останавливал его, отключал фаервол результат тот же.
через браузер на серваке входит на ресурсы без проблем.
Опрашиваемые ресурсы разные общедоступные, но как результат из 10 раз удачно опрашиваю в 2-3 случаях, остальное ошибка.
даже цбр курсы иногда отваливаются, но значительно реже.
Видел у кого то, что прокси может что то дописывать, но у меня его нет, сервак напрямую в инете (через роутер).

Сообщение 6522, уровень 16, состояние 1, строка 1
Произошла ошибка .NET Framework во время выполнения определяемой пользователем подпрограммы или агрегатной функции "htmlGetWithCredentials":
System.Net.WebException: Невозможно соединиться с удаленным сервером ---> System.Net.Sockets.SocketException: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера ip:80
System.Net.Sockets.SocketException:
в System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
в System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
System.Net.WebException:
в System.Net.HttpWebRequest.GetResponse()
в network.htmlGetWithCredentials(SqlString UriString, SqlString poststring, SqlString Encoding, SqlString login, SqlString password)

вот функция уже взята из примера в инете, но результат тот же:
[Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
public static SqlString htmlGetWithCredentials(SqlString UriString, SqlString poststring, SqlString Encoding,SqlString login,SqlString password)
{
WebRequest request = WebRequest.Create((string)UriString);
request.Timeout = int.MaxValue;
if ((string)login != "")
request.Credentials = new NetworkCredential(
Convert.ToString(login),
Convert.ToString(password));
request.Method = "GET";
((HttpWebRequest)request).UserAgent = "CLR web client on SQL Server";

SqlString document = "";
WebResponse resp = (WebResponse)request.GetResponse();
System.IO.Stream dataStream = resp.GetResponseStream();
System.IO.StreamReader rdr = new System.IO.StreamReader(dataStream);
document = (SqlString)rdr.ReadToEnd();

        // Close up everything...
        rdr.Close();
dataStream.Close();
resp.Close();
return document;
}
13 июн 17, 16:24    [20561136]     Ответить | Цитировать Сообщить модератору
 Re: CLR Загрузка веб страниц  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1369
ssa82,

У вас ошибка на сокете, выводите более детальную информацию по этому исключению: System.Net.Sockets.SocketException

SocketErrorCode

лично мне сразу в глаза бросилось "ip:80" такое впечатление что порт указали а адрес хоста нет.
13 июн 17, 18:48    [20561557]     Ответить | Цитировать Сообщить модератору
 Re: CLR Загрузка веб страниц  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4739
ssa82,

Если вы ждете, что веб-запрос будет всегда отрабатывать успешно, то вы наивны. Веб запрос - такая вещь, что может отвалиться по многим причинам. Как с вашей стороны, так и со стороны веб-ресурса.
13 июн 17, 19:20    [20561634]     Ответить | Цитировать Сообщить модератору
 Re: CLR Загрузка веб страниц  [new]
ssa82
Member

Откуда:
Сообщений: 26
ip я описании убрал. так там реальный ип просто пример не хотел засвечивать, а так там нормально написано.
Проверочный сайт это фтп через веб, с логином паролем.
Сделал обёртку перебор всех вложенных ошибок innerException, их не было ошибка та же

Произошла ошибка .NET Framework во время выполнения определяемой пользователем подпрограммы или агрегатной функции "htmlGetWithCredentials":
System.Exception: Невозможно соединиться с удаленным серверомПопытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера (тут ип адрес который я убрал):80
System.Exception:
в network.htmlGetWithCredentials(SqlString UriString, SqlString poststring, SqlString Encoding, SqlString login, SqlString password)
.

если стучаться туда через браузеры всегда подключается проверено на 3 браузерах на серваке и рабочей машине тут же. Всегда подключался.

Можно ли как то перехватить посылки и посомотреть.
Поставил Charles, сделал из него проксю, подключился к ней.
через браузер 1 сек и все загрузилось.
Через CLR долго висела в режиме ожидание ответа, потом выдала 407 прокси должна авторизироваться, но тут вопрос это я не до настроил что то или что? как я говорил 1 раз из 10 у меня коннект проходит и все грузит.
есть ли вероятность проблемы настройки сети роутера или прав для sql server или прав для CLR?
14 июн 17, 08:36    [20562328]     Ответить | Цитировать Сообщить модератору
 Re: CLR Загрузка веб страниц  [new]
ssa82
Member

Откуда:
Сообщений: 26
поставил express 14 64x
процесс запущен под учёткой MSSQLSERVER
на рабочую машину
тоже самое прикрутил
все работает без сбоев раз 20 проверил

на серваке он пашет под учёткой sqlserver (AD учётка с админскими правами)
идут ошибки.
14 июн 17, 08:51    [20562357]     Ответить | Цитировать Сообщить модератору
 Re: CLR Загрузка веб страниц  [new]
ssa82
Member

Откуда:
Сообщений: 26
так методом "тыка".
На серваке Windows Server 2012 стояло объединение сетевых карт
Не зависит от коммутатора
баланс по хэш адресу.

Разобрал это, теперь у него 2 карты с 2 ip.
Но теперь опросы работают на ура.
14 июн 17, 09:31    [20562455]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить