在远程计算机上无法访问Microsoft.Owin.Hosting.WebApp.Start从Windows服务中公开的



我创建了一个使用WebApp的Windows服务(使用Topshelf包)。开始侦听http请求。我的代码如下:

var options = new StartOptions();
options.Urls.Add( "http://localhost:9095" );
options.Urls.Add( "http://127.0.0.1:9095" );
options.Urls.Add( $"http://{ConfigurationHelper.IPAddress}:9095" );
options.Urls.Add( $"http://{Environment.MachineName}:9095" );
Microsoft.Owin.Hosting.WebApp.Start<Startup>( options );

当我在Windows服务机器上浏览时,我可以点击所有想要的URL,但当我在同一网络上的远程机器上访问该机器时,我在点击URL时会出现500错误(即。http://192.168.100.14:9095/hangfire/)。

一些注意事项:

  1. Windows防火墙已关闭,但我仍在与IT部门确认我们的硬件防火墙是否会阻止某些东西(如果是这样,我们会得到500还是404?)

  2. windows服务以属于Administrators组的本地用户身份运行。

  3. 对于这些URL中的每一个,我都运行了netsh命令:netsh http add urlacl url=http://127.0.0.1:9095/ user=myAdminUser

关于为什么我会得到500分或如何在任何地方看到任何诊断信息,还有其他想法吗?(调试视图和事件查看器没有任何内容)。

这是我第一次申请Owin,所以我对它还很感兴趣。

更新:OWIN错误跟踪

[8496]BTR.Evolution.Service OWIN异常:对象引用未设置为对象的实例
[8496]
[896]在Hangfire.Dashboard.MiddlewareExtensions.未经授权(IOwinContext-owinContext)
[8496]在Handfire.Dashboard.Middleware Extensions。<>c__DisplayClass1_2.b_1(IDictionary `2 env)
[8496](位于Microsoft.Owin.MapMiddleware.d_0.MoveNext())
[8496]-从引发异常的前一个位置开始的堆栈跟踪结束---
8496](位于System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务))
[8496]
[8496],位于C:\BTR\Source\Evolution.Service\BTR.Evolution.Services\Startup.cs:line 20

所以也许罪魁祸首不是OWIN,而是Hangfire和我远程使用它的尝试。将研究授权过滤器,看看这是否会有所帮助。

了解如何通过创建OWIN中间件记录器从异常中获取堆栈跟踪。请参阅OWIN/Katana的未处理异常全局处理程序?了解更多详细信息。

根据包含堆栈跟踪的更新判断,您需要调查hangfire中的身份验证问题。退房http://docs.hangfire.io/en/latest/configuration/using-dashboard.html#configuring-authorization—这表示出于安全原因,默认情况下只允许本地请求。它还提供了示例代码,展示了如何使用IAuthorizationFilter来允许远程请求。

最新更新