【问题标题】:Visual Studio 2010 randomly unable to debug WCF serviceVisual Studio 2010 随机无法调试 WCF 服务
【发布时间】:2010-06-02 21:24:12
【问题描述】:

我在 Windows 7 x64 机器上运行 Visual Studio 2010,偶尔 VS 给我很好的旧 “远程过程无法调试。这通常表明在服务器上没有启用调试" 很多人问的错误。

不过,我的问题是,它似乎只是随机执行此操作(可能是几分钟到几小时不等),并且在我已经成功调用该服务之后。它不会阻止服务工作。它仍然返回值并且不会抛出任何错误。唯一的区别是每次我开始调试我的应用程序时都会弹出烦人的对话框。

我应该提到我正在从 WPF 应用程序连接 WCF 服务。如果我启动该服务所属的网站,我不会收到对话框。

我尝试过的一些方法不起作用:

  • 杀死并重新启动服务器。
  • 在 x86 中编译 Web 服务器
  • 启用跟踪,但找不到 任何问题。

这只是 Visual Studio 2010 中的一个错误,还是我遗漏了什么?

更新

我注意到,如果我的 WPF 应用程序在 WCF 服务初始化时崩溃,就会出现这种情况。之后,所有调用 WCF 服务的尝试都会弹出“无法调试”消息,直到我重新启动 VS2010。

【问题讨论】:

  • 请澄清“我正在从 WPF 应用程序连接 [to?] WCF 服务。如果我启动该服务所属的网站,我不会收到对话框。”您似乎告诉我们您必须在尝试连接之前启动服务,但这太明显了。
  • @Brian:对不起,让我更清楚一点。 WCF 服务在 ASP.Net 站点上运行。如果我启动 ASP.Net 站点以通过 Visual Studio 调试站点,我不会遇到任何问题。
  • 我正在经历同样的事情。你解决了吗?

标签: .net wcf debugging visual-studio-2010


【解决方案1】:

如果您已经部署了服务,这可能不一定是一个选项,但如果您将网站添加为本地项目而不是 IIS 项目,它将使用内置的调试 Web 服务器 (Cassini) , VS 似乎没有那么麻烦。

【讨论】:

    【解决方案2】:

    所以我有几个关于您正在运行的 WCF 服务的问题。您是否已将 WCF 配置为在 ASP.NET 兼容模式下运行? ASP.NET compatibility mode? 可能是您附加到 Web 服务器而不是托管 WCF 的进程。您还可以让其他人重现该行为吗?如果是这样,我会向其中一位 Visual Studio 产品经理发送电子邮件,以确保对此进行修复以使其进入 SP1。

    【讨论】:

    • 我已经在打开和关闭 ASP.Net 兼容性的情况下进行了尝试,但一段时间后仍然会出现错误。另外,我有两台电脑在做这个项目,而且两台电脑上都有。
    • 这样的间歇性行为听起来更像是一个错误。我正在使用 VS2010 进行 SharePoint 2007 工作,如果我将 DLLS 直接复制到 GAC 中,有时我会遇到附加到 WSS 进程的问题,因为我通常必须执行一些其他类型的部署过程。
    【解决方案3】:

    这是一个漫长的过程,但我通过为 ASP.NET 重新运行 regiis -i 解决了类似的问题:

    x64
    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
    x86
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
    

    确保之后进行 iisreset。

    【讨论】:

    • 嘿,杰夫,我几天前写更新的时候想回复这个。我确实尝试过,但它似乎对问题没有影响。
    【解决方案4】:

    不确定这是否可行,但根据您的更新,似乎该进程未附加,因此您无法调试。

    理论如下:

    • 当它正常启动时,该进程已附加并且一切正常。
    • 当 WPF 应用程序崩溃时,WCF 服务会启动,但不会附加到任何东西
    • 当您重新启动 WPF 应用程序时,它会看到 WCF 应用程序正在运行,无需启动它,因此它不会被附加。

    然后解决方案是尝试手动附加包含 WCF 应用程序的进程。

    【讨论】:

      【解决方案5】:

      Visual Studio 不会调试所有 Web 应用程序。仅有效的网络服务。

      如果不是这样,可能是 machine.config 错误。看看吧。

      无论如何,如果你手动连接,它必须工作。

      注意:我在使用 VS2010 beta 时遇到了一些奇怪的调试问题。 获得许可证后,它就可以完美运行了。

      【讨论】:

        【解决方案6】:

        你提到:

        WCF 服务正在一个 ASP.Net 网站。如果我启动 ASP.Net 站点以调试站点 通过 Visual Studio,我没有得到任何 问题

        您是否启用了 .NET Framework WCF 激活功能?

        假设您使用的是 Windows Server 2008:

        1. 打开服务器管理器
        2. 打开功能点击“添加功能”
        3. 扩展 .NET Framework 3.5.1 功能
        4. 扩展 WCF 功能 选择 HTTP 和非 HTTP 激活机制

        如果没有这些激活功能,IIS 不会安装知道如何激活托管 WCF 服务的进程的侦听器。

        当您手动访问网站时,您正在手动激活进程,因此应该会看到您的 WCF 服务变得可用。但是您还提到它们“随机”变得不可用 - 这可能是托管进程由于缺乏活动而终止并且在您下次尝试向您的服务发送消息时不会自动启动。

        【讨论】:

          【解决方案7】:

          在您的网络服务中,如果您使用静态初始化程序,记录这些初始化程序是否成功运行可能会有所帮助。例如(使用分配给'Log'的log4net记录器):

          static Foo() {
             try {
                // ... initialization code here
                Log.Info( ... ); // log success
             }
             catch(Exception ex) {
                Log.Fatal(ex.ToString()); // log failure reason
             }
          }
          

          这不止一次是我团队的救命稻草。

          【讨论】:

            【解决方案8】:

            如果 WPF 应用程序是在 32 位模式下编译或从不同的(32 位计算机)运行的,您是否将托管 WCF 服务的 IIS 站点的应用程序池设置为“启用 32 位应用程序”为 true?

            不确定这是否是必要的,但您已经尝试了很多其他方法,因此如果尚未设置,可能值得一试。

            【讨论】:

              【解决方案9】:

              好的,在您尝试 1,000 件事情之前,请注意您使用的是 VS.NET 2010,并且可能有一个有效的暴露错误。您可能做的一切都是正确的,问题出在产品上。事实上,当 Blend 和 .NET 都在调试时打开时,我在 Microsoft Connect 中遇到了一个问题,即 IDE 随机崩溃。我向他们发送了问题的 .dmp 转储文件,他们正在查看。

              如果您可以重现 WCF 异常消息,您可能希望使用 Microsoft Connect for Visual Studio 打开一个项目。链接如下:

              Visual Studio 和 .NET Framework Microsoft Connect: http://connect.microsoft.com/VisualStudio

              【讨论】:

                【解决方案10】:

                我通过以下方式解决了这个问题:
                1.关闭 Web 服务应用程序的 Visual Studio 实例
                2.从iis管理器中删除应用程序
                3.在具有管理员权限的 Visual Studio 中重新启动 Web 服务解决方案(win 7)
                4.当提示我是否要在 iis 中创建应用程序时,我说是
                5.成功了

                【讨论】:

                  【解决方案11】:

                  查看 C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE 文件夹中包含的名为 vsdiag_regwcf.exe 的实用程序。

                  这里有更多信息可以解决您的问题Debugging WCF Services in Visual Studio 2008

                  【讨论】:

                    猜你喜欢
                    • 2011-09-10
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-11-04
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多