Запустить метод без активного подключения - PullRequest
2 голосов
/ 06 июля 2011

Я хотел бы создать систему истечения срока действия для своего веб-сайта, где пользователь платит за определенный период времени, после чего срок действия его учетной записи истекает. Что мне нужно, так это способ заставить их истечь. Я думал о том, чтобы иметь метод, который будет запускаться один раз в день и отключать любого пользователя, у которого истек срок годности, но я не знаю, как реализовать это, потому что все, что я сделал до сих пор, зависит от человека, который подключается. этот код должен быть независимым от посетителей сайта.

Edit:

Спасибо за все идеи.

Я подумал упомянуть, что я не могу выполнить всю задачу, просто выполнив задание на сервере SQL. Мне также нужно было бы перемещать и изменять файлы.

Примерно так:

public void checkExpire()
{
    // much more code to check the expiration goes here

    if (DateTime.Now == expiration)
    {
        MembershipUser user = Membership.GetUser();
        user.IsApproved = false;
        Membership.UpdateUser(user);
        File.Move(Request.PhysicalApplicationPath + "logs\\" + user.UserName + ".xml", Request.PhysicalApplicationPath + "logs\\disabled\\" + user.UserName + ".xml");
        File.Move(Request.PhysicalApplicationPath + "reps\\" + user.UserName + ".xml", Request.PhysicalApplicationPath + "reps\\disabled\\" + user.UserName + ".xml");
        email mail = new email("", true);
        mail.sendMail(user.UserName, "Dear user, \n\nYour account has been disabled. None of your data has been lost.\nIf you believe this was a mistake please contact the administrator", "Account Disabled");
        Response.Redirect("/Restricted/Members.aspx");
    }
}

Я смотрел на Quartz.net, это позволило бы мне сделать это?

Решено:

Спасибо Крису Марисику, который порекомендовал Quartz.net. Это позволило мне запустить пользовательское событие в любой интервал, который я хотел. для asp net я создал кнопку, которую мог видеть только админ, чтобы запустить событие. Учебное пособие № 3 на веб-сайте кварца было в основном тем, что я использовал.

Ответы [ 4 ]

2 голосов
/ 06 июля 2011

Этот вопрос касается основного планирования задач, которое является нетривиальной задачей для реализации.

Я бы порекомендовал взглянуть на Quartz.NET или Sql Server Job Agent для получения системыаналогично предложениям @ Nicklamont.

1 голос
/ 06 июля 2011

Создайте задание SQL в вашей базе данных. Запускай его каждую ночь.
Вы можете выбрать, обновить или удалить всех плохих пользователей, которых вы хотите. Он не зависит от кода C # и довольно быстр, потому что он будет работать на сервере SQL.

Как: создать шаг задания Transact-SQL (SQL Server Management Studio)

1 голос
/ 06 июля 2011

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


В методе, который вы говорите, вы будете бегать один раз в день. Проверьте все учетные записи, срок действия которых истекает в этот день, и установите для активного поля значение false.


Надеюсь, что это даст вам некоторые идеи, GL

0 голосов
/ 06 июля 2011

Напишите консольное приложение для проверки. Если у вас есть доступ к запланированным задачам сервера, добавьте его для запуска, как вам угодно. Если вы не знаете, как создать консольное приложение, вот учебник по MSDN:

http://msdn.microsoft.com/en-us/library/0wc2kk78%28v=vs.90%29.aspx

...