2017-02-20 16 views
0

ローカルに私のASP.NET Core Webサイトがうまく動作しましたが、Azureに公開する際に内部サーバーエラーが発生しました(「起動中にエラーが発生しましたアプリケーション ")。 found out more details on the exact errorをに、WebHostBuilderProgram.csにそれぞれ渡すことによって行われます。Azureポータルの「認証/承認」設定で外部認証が動作しない

System.ArgumentException: The 'ClientId' option must be provided. 

これはStartup.csConfigure()の一環として、Googleの認証オプションを指します。

開発時
app.UseGoogleAuthentication(new GoogleOptions() 
{ 
    ClientId = Configuration[ "Authentication:Google:ClientId" ], 
    ClientSecret = Configuration[ "Authentication:Google:ClientSecret" ] 
}); 

、これらが正常にStartup()にユーザーの秘密を使用してロードされます。

if (env.IsDevelopment()) 
{ 
    builder.AddUserSecrets<Startup>(); 
} 

According to the documentationClientIdClientSecretは、Webアプリケーションの設定の「認証/承認」の下のAzureポータルで指定する必要があります。私が最初に指定したにもかかわらず、例外は存続します。

何か不足していますか?

答えて

0

'認証/承認'の設定は、環境変数を設定するうえで便利なフロントエンドです。これはあまりよく説明されていません。代わりに、これらの設定は、(アプリケーション設定 - >アプリケーション設定)のに設定することもできます。

external authentication provider tutorial for Googleは、Authentication:Google:ClientIdAuthentication:Google:ClientSecretを環境変数のキーとして使用することを推奨しますが、これらはAzureの認証メニューで設定されたキーではありません。

あなたは認証メニュー(単に「アプリの設定」で、独自のキーを設定することとは対照的に)、あなたはそれが設定する環境変数を把握する必要がありに設定された値をロードする場合。

PowerShellでGet-ChildItem Env:を使用して、すべての変数を迅速に上場(アズールの「高度なツール」からアクセスできる「クーズーは」、)代わりに使用しなければならない変数を示しています

app.UseGoogleAuthentication(new GoogleOptions() 
{ 
    ClientId = Configuration[ "WEBSITE_AUTH_GOOGLE_CLIENT_ID" ], 
    ClientSecret = Configuration[ "WEBSITE_AUTH_GOOGLE_CLIENT_SECRET" ] 
}); 

は、更新することを忘れないでくださいユーザーの秘密に保存されているキーも!

p.s.奇妙なことに、最初に「アプリケーション設定」を使用して変数を設定しようとすると、メニューを再ロードすると消えてしまいました。ちょうど頭が上がって、そのインタフェースはちょっとバグがあるようです。