2016-03-07 5 views
2

Я создаю новостной сайт с использованием ASP.NET. Я хочу, чтобы он обновлялся автоматически, вытягивая новые статьи новостей. Это делается путем вызова функции, которая загружает обновленную строку json.Обновите сайт автоматически, вызвав функцию

Как я могу назвать эту функцию каждые полчаса в C#? Или я должен написать эту функцию в javascript и позвонить ей каждые полчаса?

+0

Вы можете создать работу cron для того же самого. – lalitpatadiya

+0

вы можете взглянуть на 'SignalR' (http://www.asp.net/signalr) –

ответ

0

По определению сайты не имеют триггеры времени. Каждый запрос является независимым, и сервер может находиться в режиме «сна» перед запросами.

Но проблема, которую вы описываете, довольно распространена.

Есть несколько способов ее решения:

  1. Hacky метод: после страницы открыты и некоторые Javascript сделать вызов каждые XX минут/секунд
  2. Если вы используете Microsoft Azure, вы можете использовать веб-Jobs будущая (бесплатная) или функция планировщика (бесплатно для 5 операций)
  3. Вы можете создать службу Windows, которая будет называть ваш сайт каждые XX минут. Исключительная структура (бесплатно) - кварц. Вам нужно разместить эту услугу на «всегда на» Windows PC, отделенный от вашего веб-сайта
+0

Если я использую javascript для вызова моей функции в C#, вызовет ли она функцию, даже если веб-сайт не открыт? На заднем фоне? Итак, когда я открываю сайт (скажем, через 30 минут), я просмотрю содержимое обновлений? – ashish1512

1

Использование ниже в головной метке, чтобы обновить страницу,

<meta http-equiv="refresh" content="value"> 

Здесь значение в секундах. Если вы хотите обновить страницу через 30 минут, используйте значение 1800 в качестве значения.

2

Вы можете использовать таймер в C#

protected void Page_Load(object sender, EventArgs e) 
    { 
     // Create a timer 
     System.Timers.Timer myTimer = new System.Timers.Timer(); 

     //call method 
     myTimer.Elapsed += new ElapsedEventHandler(mymethod); 

     //time interval 5 sec 
     myTimer.Interval = 5000; 
     myTimer.Enabled = true; 
    } 

public void mymethod(object source, ElapsedEventArgs e) 
    {    
     //your code 
    } 

Кроме того, вы можете использовать функцию SetTimeout в Javascript

setTimeout(function() { 

//calls click event after a certain time 
    that.element.click(); 
}, 5000); 

ИЛИ

Используйте задачи для этого

Task.Factory.StartNew(() => 
    { 
     System.Threading.Thread.Sleep(5000); 
     CallMethod(); 
    }); 
+0

Будет ли работать, даже если сайт не открыт? Позвонит ли он функции в фоновом режиме? Я размещаю сайт в GoDaddy. – ashish1512

+0

Что вы подразумеваете под Веб-сайтом, не открыт? & откуда вы тянете новости? с другого сайта или из базы данных? – user2148124

+0

Используйте таймер вместо потока. – user2148124

1
  1. Вы можете установить источник данных своего сайта куда-нибудь, например, статический файл Json/XML или базу данных.

  2. Создайте планировщик, который будет искать новые данные в вашем конкретном интервалах в вашем конкретном месте, где вы получаете строку Json .

  3. Ваш планировщик будет обновлять источник данных, который будет обновлять ваши новости

0

Вы должны создать службы Windows для этого. потому что он будет работать в фоновом режиме даже после того, как страница вашего сайта не будет открыта.

Else

Использование Microsoft Azure, это поможет вам создать функцию планировщика, который будет держать продолжать обновлять содержание веб-сайта.

Смежные вопросы