Как автоматически отправлять отчет по электронной почте ежемесячно в asp .net

#asp.net

#asp.net

Вопрос:

может ли кто-нибудь прислать мне решение по этой проблеме. Здесь я хочу отправить crystal report, который автоматически генерируется и прикрепляется к почте. Здесь отчет может генерироваться ежемесячно автоматически с помощью asp .net вместе с c # Lang. Пришлите мне решение для этого.

Комментарии:

1. Вы пробовали использовать службы Windows (фоновый процесс)?

2. И Пейтон, и Сай правы, вам нужно использовать службу Windows.

Ответ №1:

Я согласен с приведенными выше рекомендациями использовать запланированную задачу (консольное приложение), но никто не упоминал, что вы не можете запланировать выполнение веб-страницы по подобному расписанию без внешней утилиты, которая в основном планирует HTTP-запрос. Не говоря уже о том, что отчет, который должен выполняться ежемесячно, обычно не может завершиться в любом случае до истечения ограниченного времени ожидания ответа (по умолчанию). Вот что, это плохая идея. Однако, в интересах ответа на вопрос, я скажу, что вы можете написать простое консольное приложение на VBS или C # (.NET), чтобы выполнить HttpRequest на свой веб-сервер и отправить результат по электронной почте. Затем добавьте это консольное приложение в планировщик задач Windows для ежемесячного выполнения. Теперь ваш ASP.NET приложение ежемесячно отправляет электронные письма. Не забывайте, что вашему консольному приложению C # потребуется выполнить вход в систему и аутентификацию (при необходимости).

Альтернативой является (ненадежно) создание таймера (фоновый процесс) в вашем global.asa (область применения), когда HttpApplication.Вызывается метод Init. Причина, по которой это ненадежно, заключается в том, что объект приложения может быть повторно использован в любое время и может даже не выполняться, если в это приложение некоторое время не поступало запросов. Кроме того, если у вас есть среда веб-фермы, каждый сервер (и каждый серверный процесс в сценарии веб-сада) запускает свой собственный экземпляр вашего объекта HtppApplication. Они могут даже перекрываться в пределах одного и того же пространства процесса, пока выполняется сбор мусора.

Комментарии:

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

Ответ №2:

Вы можете использовать любой из следующих:

 1. set "windows task scheduler" to schedule an .vbs file that triggers an "asp.net page or webservice" to run and do your logic once in a month (Recommended).

2. Create a "windows service" project and set a timer within its onstart event.(windows service creation only available in professional/Ultimate versions of visual studio, but editing and compilation can be done in other versions) 
  

Поскольку логика должна выполняться один раз в месяц, рекомендуется шаг 1.

Пожалуйста, ознакомьтесь с шагами по созданию файла .vbs, который вызывает ваш asp.net страница / веб-сервис

  1. Откройте блокнот и скопируйте в него следующий код и сохраните

     'Declare variables
    Dim objRequest
    Dim URL
    
    Set objRequest = CreateObject("Microsoft.XMLHTTP")
    
    'Put together the URL link appending the Variables.
    URL = "http://computerName/VirtualDirectoryName/Logic.aspx"
    
    'Open the HTTP request and pass the URL to the objRequest object
    objRequest.open "POST", URL , false
    
    'Send the HTML Request
    objRequest.Send
    
    'Set the object to nothing
    Set objRequest = Nothing
      
    1. измените расширение с «.txt» на «.vbs»

    2. Создайте новое расписание в Windows «Планировщик задач» и укажите вновь созданный файл sample.vbs, который вызовет страницу, на которой написана ваша логика (http://computerName/VirtualDirectoryName/Logic.aspx ) и отредактируйте настройки для запуска раз в месяц.

Комментарии:

1. Я поддержу рекомендацию использовать планировщик задач Windows. Я бы сделал еще один шаг вперед и генерировал отчеты с помощью (запланированного) консольного приложения или служб SQL Reporting Services.

2. не могли бы вы прислать мне какой-либо код, описывающий, как создавать службы Windows и как я могу использовать в своем проекте. Я никогда раньше не пользовался службами Windows.

3. @lucky jain, поскольку вы запускаете свое действие через длительный период (раз в месяц), лучше использовать планировщик задач Windows. Обычно службы Windows используются для триггеров с более коротким периодом (по крайней мере, один раз в день).

4. @lucky jain, я обновил свой ответ некоторыми шагами по внедрению планирования с помощью планировщика задач Windows.

5. @lucky jain, Не поймите неправильно приведенный мной код. Это код скрипта vb, используемый для вызова вашего asp.net страница, на которой вы должны выполнить логику генерации отчета. Просто отредактируйте «URL = » имя_компьютера /VirtualDirectoryName /Logic.aspx «» его часть и поместите в корневую папку. Каждый раз, когда вы запускаете файл .vbs, ваша страница будет выполняться. Чтобы запустить файл .vbs, добавьте новое расписание в планировщик задач Windows и укажите пример файла.vbs и установите расписание для выполнения.

Ответ №3:

Для автоматической генерации ежемесячных отчетов используйте службы Windows