【问题标题】:An invalid request URI was provided. (No helpful info in the stack trace)提供了无效的请求 URI。 (堆栈跟踪中没有有用的信息)
【发布时间】:2019-03-22 18:41:13
【问题描述】:

在这里拉我的头发。一切正常,然后出乎意料地,我开始在Microsoft.Owin.Security 周围遇到一些错误。按照该站点上的一些提示,我卸载了该软件包以及所有依赖它的软件包(有很多),然后全部重新安装。

现在当我在调试中运行该站点时,我得到了这个:

提供的请求 URI 无效。请求 URI 必须是绝对 URI,或者必须设置 BaseAddress。

令人沮丧的是,堆栈跟踪中没有任何我能理解的东西。我会把它全部粘贴在下面。

Visual Studio 2017 中的 .NET 4.7.1 Web 应用程序

有关如何进行故障排除的任何提示都会有所帮助。我已经删除了整个解决方案并将其从 TFS 中重新拉出。使用相同源代码的队友没有看到这个。

编辑:

我能打断点的唯一地方是索引控制器中的构造函数。那个构造函数是空的。断点命中,然后即使我进入调试,接下来发生的事情就是抛出错误。如果我能确定导致错误的确切位置/原因会很好,但即使这样我也遇到了麻烦。

Stack Trace: 


[InvalidOperationException: An invalid request URI was provided. The request URI must either be an absolute URI or BaseAddress must be set.]
   System.Net.Http.HttpClient.PrepareRequestMessage(HttpRequestMessage request) +335995
   System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) +99
   System.Net.Http.HttpClient.GetAsync(Uri requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken) +65
   Microsoft.IdentityModel.Protocols.<GetDocumentAsync>d__8.MoveNext() +196

[IOException: IDX20804: Unable to retrieve document from: '[PII is hidden]'.]
   Microsoft.IdentityModel.Protocols.<GetDocumentAsync>d__8.MoveNext() +662
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.IdentityModel.Protocols.OpenIdConnect.<GetAsync>d__3.MoveNext() +291
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +25
   Microsoft.IdentityModel.Protocols.<GetConfigurationAsync>d__24.MoveNext() +1129

[InvalidOperationException: IDX20803: Unable to obtain configuration from: '[PII is hidden]'.]
   Microsoft.IdentityModel.Protocols.<GetConfigurationAsync>d__24.MoveNext() +1586
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Security.OpenIdConnect.<ApplyResponseChallengeAsync>d__8.MoveNext() +432
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Security.Infrastructure.<ApplyResponseCoreAsync>d__40.MoveNext() +272
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Security.Infrastructure.<ApplyResponseAsync>d__39.MoveNext() +271
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Security.Infrastructure.<TeardownAsync>d__34.MoveNext() +158
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Security.Infrastructure.<Invoke>d__5.MoveNext() +659
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.<RunApp>d__7.MoveNext() +179
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Security.Infrastructure.<Invoke>d__5.MoveNext() +519
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Security.Infrastructure.<Invoke>d__5.MoveNext() +519
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.<RunApp>d__7.MoveNext() +179
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.<DoFinalWork>d__12.MoveNext() +180
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult ar) +69
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult ar) +64
   System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +380
   System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +48
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +159

【问题讨论】:

  • 包含使用 HttpClient 的代码
  • 有一些方法可以调试它,但这样解释有点长......无论如何,首先在 Visual Studio (docs.microsoft.com/en-us/visualstudio/debugger/…) 中禁用“只是我的代码”,然后带上“异常设置” ”面板(调试 -> Windows -> 异常设置)并检查“公共语言运行时异常”。然后启动附加了调试器的应用程序,并运行它,直到它因“提供了无效的请求 URI”异常而中断。
  • 从那里打开“callstack”面板,双击包含“PrepareRequestMessage”的行,然后在“Watch”面板中(或使用 shift + f9 打开 quickwatch 窗口)输入“request ”。希望请求仍然在堆栈中,在这种情况下,您将能够检查它以了解这个无效的 uri 是什么
  • @Matt.G - 这是问题的一部分。我在每个使用断点的地方都设置了断点,但错误发生在它们被命中之前。

标签: c# asp.net .net


【解决方案1】:

为了记录 PII 相关异常的其他详细信息, 尝试在 Configure 方法中设置 ShowPII = true Startup 类中的类似

Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;

这应该将其他详细信息记录到输出窗口。

【讨论】:

    【解决方案2】:

    我花了两天时间。问题是不正确的授权 URL。检查您在 Azure 中设置的授权 URL 和您的应用程序是否相同。

    希望这对某人有所帮助。

    【讨论】:

      【解决方案3】:

      请检查this threadthis thread。我相信您需要注意“无法从中获取配置”异常,希望这些会有所帮助。 :)

      【讨论】:

      • 您可能会有所收获,但即使在阅读了这两个主题之后,我仍然不确定要采取什么步骤。我什至无法弄清楚这个错误是从哪里来的。我将对 OP 做一个小修改
      • 我已经对ShowPII 甚至PII 进行了完整的解决方案搜索。什么都没有。
      • 从第二个链接,我认为这条评论在这里很有用:“应用程序从 web.config 读取 OpenId 配置 url,它由授权标签和 TenantId/TenantName login.microsoftonline.com{0}" />" 问题肯定来自 OWIN(这是一个中间件),它可能值得检查除了这些配置之外你是如何配置这个服务的,如果这些仍然不能解决问题!
      • 哪条评论?
      • 抱歉,刚刚编辑 :) 2018 年 6 月 27 日,星期三 12:45 AM,作者:SaurabhSharma-MSFT
      猜你喜欢
      • 1970-01-01
      • 2015-02-06
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      相关资源
      最近更新 更多