我们运行在我们公司用C#开发的Windows窗体应用程序,一个问题让我们感到头痛。
当我们从本地计算机运行应用程序时,例如,在驱动器C:中,应用程序加载并快速运行。它是基于数据库的,这意味着它对我们的MSSQL服务器进行了大量查询,并且在不到1秒的时间内运行所有查询,同时从本地驱动器运行。
如果我们从映射的网络驱动器(不是UNC路径,M:映射驱动器)运行相同的应用程序,它加载速度很快,但查询需要很长时间才能完成,而且我们几乎看不到结果。
ClickOnce对我们来说不是一个选项(由于这里不讨论的原因),我们还有其他几个第三方应用程序可以快速运行,从同一个映射的M:驱动器加载。
我做了一些研究,我能找到的最接近的问题就是这个: http://stackoverflow.duapp.com/questions/2554716/my-c-net-application-is-running-slower-when-the-exe-is-located-on-the-network
当我右键点击该应用程序时,没有"取消阻止"选项可用,它告诉我没有附加到文件的辅助流,并且它已被信任"通过机器。
另外,我尝试在.config文件中添加&lt; loadFromRemoteSources enabled =&#34; true&#34; /&gt; ,但到目前为止它没有对应用程序性能造成任何影响。< / p>
应用程序未签名,并且应用程序的调试版和发行版都发生缓慢。
我们做错了什么?
PS:我仍然在努力查明需要更长时间工作的确切命令,但到目前为止还没有运气。
编辑:添加新信息。似乎问题不在于网络本身&#34;,而是应用程序正在执行后台任务并因为它是从网络运行而失败的事实。此失败并未包含在try-catch块中,并且阻止后台任务正确返回,从而在应用程序响应上造成重大延迟。
这意味着这是我们的开发错误,而不是Windows错误。谢谢你的回答,我将投票决定关闭这个问题。
答案 0 :(得分:1)
我最近发现了一个情况,.net winforms sql-server应用程序确实发生了这种情况。
在一台机器上,应用程序是闪电般快速的,在另一台机器上,查询需要几秒钟。
第二台计算机配置为使用通过PPTP拨打的VPN。 VPN是automatically reconnecting whenever the computer got online - 即使机器在公司网络中(不需要VPN)。 VPN自动重拨技巧似乎总是非常有用......直到我发现与SQL服务器的连接基本上 始终 因此而通过VPN。手动立即断开VPN帮助:响应再次快速恢复。
我不是说这是你的情况下的明确解决方案,但这是导致几乎不可接受的查询缓慢的原因之一。我亲眼看到了这一点。