【问题标题】:HTTP Error 400 - OWIN with TopshelfHTTP 错误 400 - 带有 Topshelf 的 OWIN
【发布时间】:2016-03-05 05:50:57
【问题描述】:

我使用 Owin 和 topshelf 创建了一个 Windows 服务。
该应用程序是一个侦听端口 9000 的 WebAPI,我已在防火墙规则中允许此端口。
当我在 Windows Server 2008 上执行 .exe 文件时,我可以在本地使用它(localhost:9000)
但是当我尝试从其他机器访问它时,我收到以下错误消息:

HTTP Error 400. The request hostname is invalid

我错过了什么? 请帮忙。

【问题讨论】:

    标签: asp.net .net


    【解决方案1】:

    这解决了我的问题,这对你来说可能非常明显,但对我来说不是那么明显。
    而不是使用此代码:

    WebApp.Start("http://localhost:8080/");
    

    我不得不使用这个:

    WebApp.Start("http://*:8080/");
    

    当然也不要忘记在防火墙中打开端口。

    【讨论】:

    • 这为我解决了这个问题,尽管应用程序现在必须以管理员权限运行 - 所以调试起来并不容易。当作为服务运行时,它使用“本地系统”,这看起来很好,所以它至少可以工作。
    【解决方案2】:

    可能是远程机器上的主机条目?请记住,“localhost”指向当前机器本身。您可能需要设置一个本地 IIS 服务器,将您的 WebApi 部署到该服务器,以便其他计算机可以看到它。

    顺便说一句,您的 ASP.Net 开发服务器(Visual Studio 的内置服务器)无法为 localhost 以外的其他页面提供服务,因此您可能需要使用 Fiddler 或 Cassini 之类的东西来欺骗它,以便在调试。

    这里有一些相关的答案: Can I access ASP.NET Development server in an intranet?

    希望对你有帮助

    【讨论】:

    • 但是如果我想使用自主机呢?
    • 你是说Kestrel之类的?当然,这也应该有效。重要的是,Visual Studio 的开发环境除了“localhost”地址之外没有给你任何东西,所以即使打开了防火墙,它也不起作用。
    • 我的意思是使用自己的主机。我听说你不再需要 IIS
    • 这与 OP 的问题无关。他没有尝试连接到 VS 的服务器,而是尝试使用 topshelf 连接到 OWIN 自托管 API 以作为服务运行。
    猜你喜欢
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    相关资源
    最近更新 更多