3

我正在使用 ASP.NET MVC 5。.NET Framework 的版本为 4.5。在我发布我的项目后,Hangfire 不再工作了。所以我的重复任务不会工作。当我输入 www.{myurl}/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 和我发布的项目版本上使用相同的数据库。

4

2 回答 2

5

默认情况下,对 Hangfire Dashboard 的远程请求会被拒绝——在将授权发布到生产环境之前,很容易忘记授权。

您可以使用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());
});
于 2014-12-19T10:46:08.620 回答
1

这不是好的做法,但您可以使用以下代码来允许所有用户

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

代码来自

于 2016-07-06T07:25:29.890 回答