Visual Studio 2010随机无法调试WCF服务

时间:2010-06-02 21:24:12

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

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

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

我应该提一下,我正在从WPF应用程序连接WCF服务。如果我启动该网站,该服务是其中的一部分,我没有得到对话框。

我尝试过的一些不起作用的事情:

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

这只是Visual Studio 2010中的一个错误,还是我缺少的东西?

更新

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

11 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这是一个很长的镜头,但我通过为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。

答案 3 :(得分:0)

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

这是理论:

  • 当它正常启动时,附加过程并且一切正常。
  • 当WPF应用程序崩溃时,WCF服务已启动,但未附加到任何内容
  • 当您重新启动WPF应用程序时,它会看到WCF应用程序正在运行,无需启动它,因此它无法连接。

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

答案 4 :(得分:0)

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

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

无论如何,如果你是manualy,它必须工作。

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

答案 5 :(得分:0)

你提到:

  

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激活机制
  5. 如果没有这些激活功能,IIS不会安装知道如何激活托管WCF服务的进程的侦听器。

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

答案 6 :(得分:0)

答案 7 :(得分:0)

在您的Web服务中,如果您使用静态初始化程序,则可以帮助记录这些是否成功运行。例如(使用分配给“Log”的log4net记录器):

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

不止一次,这对我的团队来说是一个救生员。

答案 8 :(得分:0)

如果WPF应用程序是以32位模式编译的,或者是从另一个(32位计算机)运行,那么您是否将托管WCF服务的IIS站点的应用程序池设置为“启用32位应用程序”为真?

不确定这是否必要,但你已经尝试了很多其他的事情,所以如果没有设置它可能值得一试。

答案 9 :(得分:0)

在尝试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 :(得分:0)

我通过以下方式解决了这个问题:
1.关闭Web服务应用程序的visual studio实例
2.从iis经理发出申请 3.使用管理员权限(win 7)在Visual Studio中重新启动Web服务解决方案 4.当提示我是否想在iis中创建应用程序时,我说是的 5.工作