使用 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 中的 API 重试逻辑