使用 Amazon Web Services (EC2) 和 c# Windows Service/WCF 进行远程调试

Posted

技术标签:

【中文标题】使用 Amazon Web Services (EC2) 和 c# Windows Service/WCF 进行远程调试【英文标题】:Remote Debug with Amazon Web Services (EC2) and c# Windows Service/WCF 【发布时间】:2011-08-14 04:36:16 【问题描述】:

我在 Amazon EC2 云中有一个 Windows Server 2008 R2。我希望能够从我办公室的桌面调试在该服务器上运行的 C# Windows 服务或 WCF 服务。

过去我们通过在云中的服务器上安装 Visual Studio 来解决这个问题,但我们对本地服务器使用远程调试,所以我希望有办法让它在云中工作。

有没有人在云中没有 VPC/域的情况下完成了对 Amazon 云的远程调试?

任何建议或解决方案将不胜感激。

【问题讨论】:

【参考方案1】:

针对 EC2 实例的远程调试与针对本地服务器的远程调试没有什么不同,除了防火墙配置...

我建议设置与 EC2 服务器的 *** 连接,而不是打开防火墙端口(PPTP 既快速又简单)。

如果您更愿意打开防火墙端口,我“认为”您至少需要以下(未经测试):

TCP 139、TCP 445、UDP 137、UDP 138(都与 DCOM 相关)

【讨论】:

*** 是个好主意。谢谢! 对于 Visual Studio 2012 远程调试,您需要使用端口 4016 和 4017。【参考方案2】:

在 EC2 实例上总是给我带来问题的另一件事是没有将 /hostname 参数传递给 msvsmon。 msvsmon 喜欢默认为内部主机名,并会启动显示类似“正在侦听 'ip-1-2-3-4.us-west-2.compute.internal”的内容,这意味着它将忽略来自 Visual Studio 的连接尝试认为他们正在与“ec2-7-8-9-0.us-west-2.compute.amazonaws.com”交谈的客户。要解决此问题,请获取 EC2 实例的完整公共 DNS 名称或公共 IP,然后启动 msvsmon.exe:

msvsmon.exe /hostname ec2-7-8-9-0.us-west-2.compute.amazonaws.com

然后在 Visual Studio 中:

    工具-->附加到进程 将传输设置为“默认” 将限定符设置为您在启动 msvsmon.exe 时为主机名传递的任何内容

【讨论】:

以上是关于使用 Amazon Web Services (EC2) 和 c# Windows Service/WCF 进行远程调试的主要内容,如果未能解决你的问题,请参考以下文章

使用 Amazon Web Services 自动安排 Scrapy Crawler

text 如何使用Apache,PHP,MySQL设置Amazon Web Services EC2实例

Amazon Web Services 开发人员用户权限

Amazon Web Services 中的 API 重试逻辑

Amazon Web Services 与这些 Azure Web Services 最相似的是啥

使用 Amazon Web Services WSDL 的最佳 python 肥皂堆栈是啥?