将ASP.NET App部署到Azure Web App时出现HTTP 500.79错误/ System.UriFormatException

时间:2019-01-14 13:25:03

标签: asp.net-mvc azure azure-web-sites azure-web-app-service azure-configuration

我正在尝试为ASP.NET MVC应用程序设置暂存环境,并希望将其作为Azure Web应用程序来实现,但是我现在确实停留在HTTP 500上。

我得到的错误是:

500.79: The request failed because of an unhandled exception in the Easy Auth module.

使用诊断日志,我可以获得堆栈跟踪:

2019-01-14T13:07:22  PID[14448] Critical    System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.UriFormatException: Invalid URI: The format of the URI could not be determined.
   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
   at System.Uri..ctor(String uriString, UriKind uriKind)
   at Microsoft.Azure.AppService.Middleware.ModuleConfig.set_OpenIdIssuer(String value)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
   at Microsoft.Azure.AppService.Middleware.MiddlewareConfig.TryLoadConfig(Type type, HttpContextBase context)
   at Microsoft.Azure.AppService.Middleware.ModuleConfig.EnsureConfigLoaded(HttpContextBase context)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.Azure.AppService.Middleware.ModuleManager.LoadModuleConfig(HttpContextBase context)
   at Microsoft.Azure.AppService.Middleware.ModuleManager.LoadAllModulesAndGetEnabledModules(HttpContextBase context)
   at Microsoft.Azure.AppService.Middleware.HttpModuleDispatcher.EnsureInitialized(HttpContextBase context)
   at Microsoft.Azure.AppService.Middleware.HttpModuleDispatcher.<DispatchAsync>d__11.MoveNext()

我使用了我可以在Azure上找到的任何其他诊断工具,但是除了一个微妙的提示外,还无法找到更多的诊断工具:使用失败的请求跟踪功能,我注意到这些跟踪表明请求是针对非常奇怪且显然错误的URL的:

根据请求跟踪的网址:https://Skillmanagementtest:80

实际请求的网址:https://skillmanagementtest.azurewebsites.net

屏幕截图:Failed Request Trace

我绝对不知道此URL或端口的来源;我从未在任何地方指定端口80(无论如何,它的HTTPS是错误的)。 “ Skillmanagementtest”是我给Azure Web App命名的名称,我认为我没有在其他任何地方使用过它。正确设置了主页URL和用于身份验证的答复URL(使用AAD作为身份验证提供程序)。我的假设是,导致UriFormatException的是乱码的URL,但是我不知道URL的来源...

也就是说,该应用程序似乎可以正常启动(也可以像日志框架那样将其文件放置在启动工作中),并且启动该应用程序也不会在诊断日志中放置任何错误,但是每当发出请求时,发生上述错误。

在本地和生产环境中(使用“经典” VM,而不是Azure Web App)运行Web App都没有问题,但是我无法发现它们与Azure Web App之间的配置差异(当然除外)不同的文件路径和数据库连接)。还给出了命名为Azure中间件的Stack Trace的提示,该问题源于作为Azure Web App运行的应用程序,并且由于我几乎唯一拥有的杠杆作用,应该有一些配置错误...

作为设置暂存环境的一部分,我旨在实现尽可能多的自动化。因此,我还设置了CI / CD响应。 Azure DevOps构建和发布管道。这似乎一切正常。在配置方面,我在web.config上使用XML转换。 web.Staging.config文件。转换都正确应用了。

-

对于可能出什么问题的任何想法,我将不胜感激,因为我自己几乎没有什么可以尝试的东西了(整整三天,我正在努力使它起作用……)

〜Finrod

1 个答案:

答案 0 :(得分:0)

“解决方案”:我已修复此错误,并分别用另一个错误替换了该错误。错误的网址是App Service的“身份验证/授权”部分中的“发行人ID”;我填写了承租人(即“ xxxxx.onmicrosoft.com”),而不是此处所述的发行人URL:https://docs.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad。但是,当我尝试向应用程序发出请求时,我得到了403。对此我将提出一个新的问题,因为我再也不知道该怎么做,但是也许有人也在这里遇到了这个问题。