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 ダッシュボードへのリモート リクエストはデフォルトで拒否されます。認証を本番環境に公開する前に忘れてしまうのは非常に簡単です。

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 に答える