2013-02-27 52 views
1

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

通常情况下,如果它是一致性错误,我会自行排除故障并进行调试。但是这里的关键是如果我通过VisualStudio IDE运行这一切,一切都按预期工作。

任何人都可以提供一些建议,我应该看/为什么?感谢名单!

+0

以管理员身份运行Visual Studio?但是,通过代码在你的main方法中插入一个断点(System.Diagnostics.Debugger.Break()我认为),那么你的程序会要求你附加一个调试器,然后你可以附加你的Visual Studio。 (当你这样做时,你可以在Visual Studio之外启动你的程序。)这将允许你调试你的程序,因为它不会通过Visual Studio启动。 – Onkelborg 2013-02-27 14:51:14

+0

ARGH !!!谢谢。我知道将所有东西都作为Adnmin运行,但我的VS以asmin自动启动,所以我总是忘记在VS之外运行管理员应用程序。我应该想到的一个明显的答案。谢谢。 – Wizaerd 2013-02-27 14:59:56

+0

@Abdul Ahad Monty - 请停止使用不是代码的东西的代码标签。像这样的编辑很小,没有帮助,并堵塞了建议的编辑队列。 [This Edit](http://stackoverflow.com/review/suggested-edits/1611352#./1611352?&_suid=136197691857801701066037251212)被拒绝。 – LittleBobbyTables 2013-02-27 15:05:57

回答

1

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

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

就这样,你不必跑以高特权过程(再次,如果你想在本地访问它)。

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

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

这也可以让你不运行的自我主机管理员,只要过程开始了对他们来说,一个用户该端口已被保留。

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