【发布时间】:2014-11-04 00:33:14
【问题描述】:
我有一个 Silverlight Web 应用程序托管在 IIS 上的 Azure vm 上。我有另一个 VM 托管 SQL Server 以及 Web 应用程序与之交互的其他应用程序。我已经使用 Azure 虚拟网络在这两个 VM 之间建立了 LAN。运行 IIS 并托管 Web 应用程序的 vm 也是我的域控制器,我正在使用 Windows 身份验证来验证此 Web 应用程序中的用户。该应用程序利用实体框架来执行一些存储过程。
总体而言,在本地和远程访问 Web 应用程序时,一切似乎都运行良好,但是有一个特定的存储过程需要大约 25 分钟才能执行,当通过此 Web 应用程序远程执行时,它的行为似乎不正常。请记住,这 25 分钟实际上是预期时间,因为此存储过程正在处理数百万条记录。
这就是我遇到的问题。从 SQL Server Management Studio 执行此存储过程时,它会在大约 25 分钟内完成。当我通过使用托管应用程序的服务器的内部 IP 从 Web 应用程序本地执行此存储过程时,它会在大约 25 分钟内竞争,服务器将响应发送回,应用程序会更新其状态。但是当我使用服务器的公共 ip 通过 web 应用程序远程执行时,虽然存储过程在服务器上执行并在 25 分钟内完成,但应用程序永远不会从服务器得到响应,一直保持忙碌状态。
我知道存储过程会执行,因为我直接在数据库服务器中对其进行跟踪,并且还使用 sql profiler 跟踪来自实体框架的任何打开的连接,即使在存储过程完成执行之后也存在。 我也在使用 fiddler 来跟踪所有 HTTP 流量,这就是我所看到的。
在使用内部 ip 通过 Web 应用在本地执行时
使用公共 IP 通过 Web 应用程序远程执行时
所有其他存储过程都需要几秒钟的时间来执行,它们似乎可以在本地和远程工作。我不确定 Azure 的端点映射是否与此有关。执行此存储过程时,我将 commandtimeout 属性设置为 0。
任何帮助将不胜感激!
图片链接:
【问题讨论】:
标签: sql-server entity-framework silverlight azure ria