2011-01-11 2 views
0

У меня есть приложение asp.net mvc, которое занимает некоторое время, чтобы загрузить на моем рабочем сервере. Я хотел бы написать сценарий для вызова моих страниц каждые 10 минут, чтобы избежать перерывов страниц на сервере, что заставило бы сервер перезагрузить их.Как использовать метод SQL CLR для вызова веб-страницы?

Я думал об использовании хранимой процедуры SQL Server для вызова моих страниц каждые 10 минут, чтобы сохранить страницы в живых.

Я читал, что могу это сделать с помощью CLR, но я не уверен, как это сделать. Кто-нибудь имеет пример вызова веб-страниц в хранимой процедуре SQL с использованием CLR?

ответ

6

Я понятия не имею, зачем вы хотите использовать хранимую процедуру для этого.

Просто напишите простое консольное приложение, чтобы «вызвать» страницу. Затем используйте запланированную задачу для запуска консольного приложения.

+0

Я пошел и создал приложение для работы с окнами для этого. – Bill

1

Код непроверенный, но что-то подобное должно работать.

Возможно, вам также понадобится ДОВЕРИТЕЛЬНЫЙ КОМПЛЕКТ.

ALTER DATABASE Foo SET TRUSTWORTHY ON; 

Код:

public partial class WebProc 
{ 
    [SqlFunction()] 
    public static string WebQuery() 
    { 
     WebRequest request = HttpWebRequest.Create("http://www.google.com"); 
     WebResponse response = request.GetResponse(); 
     Stream dataStream = response.GetResponseStream(); 
     StreamReader reader = new StreamReader (dataStream); 
     string responseFromServer = reader.ReadToEnd(); 
     return responseFromServer; 
    } 
} 
+1

-1: особенно внутри SQL Server, я думаю, что лучше использовать ответ, dataStream и считыватель внутри блоков 'using'. –

+0

@John. Конечно, код можно сделать безопасным. Это было просто для иллюстрации вопроса «Как я». Поскольку я не отвечаю «Должен ли я сомневаться». – Jafin

+0

слишком много разработчиков копируют/вставляют то, что они видят в SO и в других местах. Исправьте код, и я удалю downvote. –

0

Я понятия не имею, почему вы хотите использовать хранимую процедуру для этого.

Просто напишите простое консольное приложение, чтобы «вызвать» страницу. Затем используйте запланированную задачу для запуска консольного приложения.

Вы могли сделать это (конечно), но это не то, что вопрос с просьбой;)

ответ Jafin является правильным для этого вопроса.

Ответ (IMHO) будет заключаться в том, чтобы исправить ваш производственный сервер (т. Е. Перенастроить параметры), чтобы он не «ломал» ваши страницы каждые 10 минут.

Зачем использовать отбойный молоток (консольное приложение или .net внутри базы данных или что-то еще), когда будет делать обычный?