C# Azure上的Exchange托管API:连接尝试失败,因为连接方没有正确响应

C# Azure上的Exchange托管API:连接尝试失败,因为连接方没有正确响应,c#,azure,exchangewebservices,C#,Azure,Exchangewebservices,我的Windows Azure项目(c#)中有一个奇怪的问题 我的C#Azure应用程序使用Exchange托管API通过web与Exchange 2010服务器通信 Exchange 2010本身正在Azure VM中运行。我已打开防火墙,以便Exchange EWS Web服务在端口443上可用 在Azure Emulator中本地运行时,我的应用程序可以完美地工作。我可以看到我帐户中的所有文件夹和电子邮件。它可以通过web与Exchange虚拟机完美地通信 但是,一旦我将我的应用程序发布到

我的Windows Azure项目(c#)中有一个奇怪的问题

我的C#Azure应用程序使用Exchange托管API通过web与Exchange 2010服务器通信

Exchange 2010本身正在Azure VM中运行。我已打开防火墙,以便Exchange EWS Web服务在端口443上可用

在Azure Emulator中本地运行时,我的应用程序可以完美地工作。我可以看到我帐户中的所有文件夹和电子邮件。它可以通过web与Exchange虚拟机完美地通信

但是,一旦我将我的应用程序发布到登台环境,该应用程序就无法正常工作

第一次对服务器的调用正常,但之后,我收到以下消息:

“由于连接方在一段时间后没有正确响应,连接尝试失败;或者由于连接的主机未能响应[IPADDRESS]:443],建立的连接失败”

正如我所说,它第一次工作(我的索引页面显示了我需要的内容),但是如果我刷新该页面,它就会给我这个错误

因此,我不认为这是一个防火墙的问题,否则它不会工作的第一次

这让我感到绝望——我看不出有什么不对

希望你能帮忙

西蒙

[编辑] 以下是堆栈跟踪:

[SocketException (0x274c): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond]
   System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) +136

[IOException: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.]
   System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult) +7911429
   System.Net.TlsStream.EndRead(IAsyncResult asyncResult) +2691856
   System.Net.Connection.ReadCallback(IAsyncResult asyncResult) +79

[WebException: The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.]
   System.Net.HttpWebRequest.GetResponse() +7864676
   Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(HttpWebRequest request) +130

[ServiceRequestException: The request failed. The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.]
   Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(HttpWebRequest request) +447
   Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(HttpWebRequest& request) +647
   Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() +72
   Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder(FolderId folderId, PropertySet propertySet) +201
   Microsoft.Exchange.WebServices.Data.CalendarFolder.Bind(ExchangeService service, WellKnownFolderName name) +83

我创建了第二个云服务,并将我的应用程序部署到生产和登台环境中。该应用程序在两种情况下都能完美运行

所以我的理论是,出于某种原因,ExchangeWeb服务基于IP地址阻止了我的登台应用程序。但是没有防火墙规则

好的,所以,这并不能真正回答“为什么”或“发生了什么”,但下面是我要讨论的解决方案:

从Azure中删除云应用程序并完全重新部署它

这会产生一个新的IP地址,突然我的暂存区又开始工作了


很抱歉,我想不出更好的解决方案,但解决方案就是解决方案。

值得指出的是,Exchange工作正常,Outlook Web Access正常,我的本地模拟器版本仍然正常,Outlook desktop。好的,更奇怪。如果我更换了制作和登台,应用程序会突然开始在制作模式下工作,没有任何问题。生产应用程序现在无法在暂存中正常工作。但我确信防火墙不是问题所在。我还重新启动了Exchange服务器,但它在登台时仍然无法工作。有什么想法吗?可能是您的应用程序遇到了暂时性故障(到Exchange VM的临时连接丢失)?如果你换回登台,会发生什么?它会再次中断吗?嗨,桑德里诺,谢谢你的留言。如果我把它换回来,它又坏了!没有任何迹象表明存在连接故障,因为我的所有其他访问Exchange的方式都正常进行(RDP、OWA、Outlook、我的生产版本等)。我已使用RDP登录到服务器,并且正在运行性能监视器会话。当我的生产应用程序调用EWS时,我可以在图表中看到预期的峰值。但当我的登台版本也这么做时,什么都没有。就好像它被防火墙攻击了,但我相信它不是。443端点在Azure VM中是开放的,Windows高级防火墙具有443端点,可用于所有访问(域、私有、公共),无IP限制。IIS有443绑定,没有IP限制。我的登台应用程序可以访问EWS一次,然后它就会中断。好像有什么防洪措施之类的。可能的