【问题标题】:selfhosted WebAPI runs in IDE, but not outside of IDE自托管 Web API 在 IDE 中运行,但不在 IDE 之外
【发布时间】:2013-02-27 14:47:47
【问题描述】:

我在控制台应用程序中内置了一个自托管 WebAPI。当我通过 VisualStudio IDE 运行它时,一切正常。我有一个客户端应用程序可以很好地连接 WebAPI 应用程序并与之交互。但是,如果我在 IDE 之外运行我的 WebAPI 应用程序,只需双击 EXE,我的客户端应用程序就根本无法连接到它。我也没有得到任何真正有用的错误信息,客户端中有两个 InnerExceptions(在 PostAsXmlAsync 调用上)。第一个是“无法连接到远程服务器”,第二个是“发送请求时出错”。

通常,如果这是一个一致的错误,我会自己进行故障排除和调试。但这里的关键因素是,如果我通过 VisualStudio IDE 运行这一切,一切都会按预期运行。

任何人都可以就我应该关注/关注的内容提供一些建议吗?谢谢!

【问题讨论】:

  • 以管理员身份运行 Visual Studio?但是,在你的 main 方法中插入一个断点(我认为是 System.Diagnostics.Debugger.Break()),然后你的程序会要求你附加一个调试器,然后你可以附加你的 Visual Studio。 (执行此操作时,您将在 Visual Studio 之外启动程序。)这将允许您调试程序,就像它在未通过 Visual Studio 启动时的行为一样
  • 啊!!!谢谢你。我知道以管理员身份运行所有内容,但我的 VS 以 asmin 身份自动启动,所以我总是忘记在 VS 之外以管理员身份运行应用程序。我应该想到的一个明显的答案。谢谢。
  • @Abdul Ahad Monty - 请停止对非代码内容使用代码标签。像这样的编辑是次要的、无用的,并且会阻塞建议的编辑队列。 This edit 被拒绝。

标签: c# asp.net-web-api self-hosting


【解决方案1】:

1)如果你只是在本地访问自己的主机,你可以设置以下配置选项:

config.HostNameComparisonMode = System.ServiceModel.HostNameComparisonMode.Exact;

这样,您不必以提升的权限运行该进程(同样,如果您想在本地访问它)。

2) 另一种选择是为特定用户保留特定端口:

netsh http add urlacl url=http://+:999/ user=machine\username

这也允许您以管理员身份运行自我主机,只要该进程是为已保留端口的用户启动的。

3) 最后,最后一个选项是以管理员身份运行它。

【讨论】:

    猜你喜欢
    • 2011-07-15
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2011-03-10
    • 2015-08-22
    • 2017-06-30
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多