C# 自托管WebAPI在IDE中运行,但不在IDE外部运行

C# 自托管WebAPI在IDE中运行,但不在IDE外部运行,c#,asp.net-web-api,self-hosting,C#,Asp.net Web Api,Self Hosting,我有一个内置在控制台应用程序中的自托管WebAPI。当我通过VisualStudio IDE运行它时,一切正常。我有一个客户端应用程序,可以与WebAPI应用程序进行连接和交互。但是,如果我在IDE之外运行我的WebAPI应用程序,只要双击EXE,我的客户端应用程序就根本无法连接到它。我也没有得到任何真正有用的错误信息,客户机中有两个InnerException(在PostAsXmlAsync调用上)。一个是“无法连接到远程服务器”,第二个是“发送请求时出错” 通常,如果这是一个一致的错误,我会

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

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

有人能就我应该看什么/看什么提供一些建议吗?塔克斯

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

config.HostNameComparisonMode = System.ServiceModel.HostNameComparisonMode.Exact;
这样,您就不必以提升的权限运行该进程(同样,如果您希望在本地访问它的话)

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

netsh http add urlacl url=http://+:999/ user=machine\username
这还允许您以管理员的身份运行self-host,只要为已为其保留端口的用户启动该进程

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

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

config.HostNameComparisonMode = System.ServiceModel.HostNameComparisonMode.Exact;
这样,您就不必以提升的权限运行该进程(同样,如果您希望在本地访问它的话)

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

netsh http add urlacl url=http://+:999/ user=machine\username
这还允许您以管理员的身份运行self-host,只要为已为其保留端口的用户启动该进程


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

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