2014-12-19 5 views
2

Я работаю с ASP.NET MVC 5. .NET Framework имеет версию 4.5. После того, как я опубликовал свой проект, Hangfire больше не работает. Поэтому мои повторяющиеся задачи не будут работать. Когда я вхожу в www. {Myurl}/Hangfire, я получаю пустой сайт. Конфликт Строка не вызывает ошибку.Hangfire больше не работает после публикации проекта

config.UseSqlServerStorage("Server={myServer}.database.windows.net,1433;Database={myDatabase};User ID={myUserId};Password={MyPassword};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"); 
config.UseServer(); 

Так где же может быть проблема? Когда я запускаю свой проект на localhost, он работает нормально. Я использую ту же базу данных на localhost и в моей опубликованной версии проекта.

ответ

5

Удаленные запросы на панель мониторинга Hangfire по умолчанию запрещены - очень просто забыть о авторизации, прежде чем публиковать ее в рабочей среде.

Вы можете использовать пакет Hangfire.Dashboard.Authorization для настройки авторизации на основе пользователей, ролей, претензий или базовой аутентификации; или создать свой собственный фильтр авторизации, как показано ниже.

using Hangfire.Dashboard; 

public class MyRestrictiveAuthorizationFilter : IAuthorizationFilter 
{ 
    public bool Authorize(IDictionary<string, object> owinEnvironment) 
    { 
     // In case you need an OWIN context, use the next line. 
     // `OwinContext` class is defined in the `Microsoft.Owin` package. 
     var context = new OwinContext(owinEnvironment); 

     return false; // or `true` to allow access 
    } 
} 

После создания фильтра авторизации, зарегистрировать его:

app.UseHangfire(config => 
{ 
    config.UseAuthorizationFilters(new MyRestrictiveAuthorizationFilter()); 
}); 
1

Это не хорошая практика, но вы можете использовать следующий код, чтобы разрешить всем пользователям

app.UseHangfire(config => 
{ 
    config.UseAuthorizationFilters(); //allow all users to access the dashboard 
}); 

код from

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