【问题标题】:Startup.cs - The path in 'value' must start with '/'Startup.cs - 'value' 中的路径必须以 '/' 开头
【发布时间】:2017-06-09 15:11:37
【问题描述】:

我在 Visual Studio 2017 中创建了一个新的 .NET Core MVC 应用程序并启用了多租户身份验证。
我已经完成了配置(ClientId、Authority 等),但是当我调试应用程序时,Startup.cs 中出现异常,特别是 app.useOpenIdConnectAuthentication 方法。

给出的例外是

System.ArgumentException: 'value' 中的路径必须以 '/' 开头。

对于 C# 和 .NET Core,我有点新手,所以我不确定我是否遗漏了一些明显的东西。主要的症结在于调试器使用参数“值”所指的内容,因为我在代码中看不到任何提及它的内容。除了将配置项添加到 appsettings.json 之外,除了 Visual Studio 生成的默认模板之外没有任何变化。

【问题讨论】:

  • 如果您在问题中包含您的 startup.cs 代码将会很有帮助。 value参数的名称,而不是代码中的名称。
  • 您是否在身份验证配置中配置了类似 LoginPath 或类似路径的内容?这些路径/路线应以/ 开头
  • 可能是 OpenIdConnectAuthenticationOptions 属性之一中的无效 URL。正如#Amy 所说,您需要发布代码。
  • 谢谢大家,终于搞定了。所有文档都建议 CallbackPath 应该是不带斜杠的“signin-oidc”,但将其更改为“/signin-oidc”似乎已经解决了。
  • 仅供参考。如果我有以下条件: context.Request.Path == "login.html" 则会引发异常。但是,如果我这样做: context.Request.Path == "/login.html" 则不会引发异常。我只是在玩 app.Run(async (context) => { ... put conditions here ... } 并在我想知道发生了什么时注意到了问题。

标签: asp.net-mvc .net-core openid-connect


【解决方案1】:

由于问题中没有代码,所以我会尽量做出一般性的回答。
当您使用此重载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/"))

【讨论】:

    【解决方案2】:

    我也遇到了同样的异常,但使用了另一种方法UseExceptionHandler

    错误是:

    ArgumentException:“value”中的路径必须以“/”开头。参数名称: value Microsoft.AspNetCore.Http.PathString..ctor(string value) Microsoft.AspNetCore.Builder.ExceptionHandlerExtensions.UseExceptionHandler(IApplicationBuilder app, string errorHandlingPath)

    通过替换修复

    app.UseExceptionHandler("Home/Error");
    

    app.UseExceptionHandler("/Home/Error");
    

    注意在字符串开头添加了/ 字符。

    【讨论】:

    • 这段代码是一般的异常处理,并不能解决问题
    • 我的观点和你的答案一样,使用相对路径解决问题:)
    • 我想我现在明白了你的想法,但答案本身并没有准确地解释这个想法。您提到了很多与异常本身无关的细节。我将编辑您的答案,使其专注于问题本身。
    • 这是有道理的。谢谢@HakanFıstık
    猜你喜欢
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多