Visual Studio2017で新しい.NETCore MVCアプリケーションを作成し、マルチテナント認証を有効にしました。
構成(ClientId、Authorityなど)を完了しましたが、アプリケーションをデバッグすると、Startup.csに例外があります。具体的にはapp.useOpenIdConnectAuthentication
方法。
与えられた例外は
System.ArgumentException:「value」のパスは「/」で始まる必要があります。
私はC#と.NET Coreに関しては少し初心者なので、明らかな何かが欠けているかどうかはわかりません。主な問題は、デバッガーがパラメーター 'value'で参照していることです。これは、コードでそれについて言及されていないためです。 appsettings.jsonに構成アイテムを追加する以外に、VisualStudioによって生成されたデフォルトのテンプレート以外の変更はありません。
質問にはコードがありませんので、なるべく一般的な回答をさせていただきます。
この例外は、このオーバーロードPathString.FromUriComponent(string)
を使用し、文字列が/
文字で始まらない場合に表示されます
したがって、たとえば、次のコードは例外をスローします。
PathString.FromUriComponent("controllerName/actionName"); // throw exception
前の例外を修正するには、次のように記述できます
PathString.FromUriComponent("/controllerName/actionName"); // working, but as relative path
そしてもちろん、これは相対的なパスになります。
絶対パスを使用したい場合(文字列を/
で開始しない場合)、Uri
の代わりにstring
オブジェクトをパラメーターとして受け取るこのメソッドの別のオーバーロードを使用する必要があります。
ここに例があります
// use an absolute path
PathString.FromUriComponent(new Uri("https://localhost:8000/controller/action/"))
同じ例外が発生しますが、別のメソッドUseExceptionHandler
:
エラーは次のとおりです。
ArgumentException:「value」のパスは「/」で始まる必要があります。 Nombredelparámetro:値Microsoft.AspNetCore.Http.PathString..ctor(文字列値)Microsoft.AspNetCore.Builder.ExceptionHandlerExtensions.UseExceptionHandler(IApplicationBuilderアプリ、文字列errorHandlingPath)
交換して修正
app.UseExceptionHandler("Home/Error");
と
app.UseExceptionHandler("/Home/Error");
文字列の先頭に/
文字が追加されていることに注意してください。