Freigeben über


Einschränkungen beim WCF-Debugging

Es gibt drei Möglichkeiten, wie Sie mit dem Debuggen eines WCF-Diensts beginnen können:

  • Sie debuggen einen Clientprozess, der einen Dienst aufruft. Der Debugger tritt in den Dienst ein. Der Dienst muss sich nicht in derselben Lösung wie Ihre Clientanwendung befinden.

  • Sie debuggen einen Clientprozess, der eine Anforderung an einen Dienst sendet. Der Dienst muss Teil Ihrer Lösung sein.

  • Sie verwenden "An Prozess anfügen", um an einen Dienst anzuhängen, der derzeit ausgeführt wird. Das Debuggen beginnt innerhalb des Diensts.

In diesem Thema werden Einschränkungen für diese Szenarien beschrieben.

Einschränkungen beim Einstieg in einen Dienst

Um einen Dienst aus Clientanwendungen, die Sie debuggen, zu betreten, müssen die folgenden Bedingungen erfüllt sein:

  • Der Client muss den Dienst mithilfe eines synchronen Clientobjekts aufrufen.

  • Der Vertragsvorgang kann nicht einseitig sein.

  • Wenn der Server asynchron ist, können Sie den vollständigen Aufrufstapel nicht anzeigen, während Sie Code innerhalb des Diensts ausführen.

  • Das Debuggen muss mit dem folgenden Code in der datei app.config oder Web.config aktiviert werden:

    <system.web>
      <compilation debug="true" />
    </system.web>
    

    Dieser Code muss nur einmal hinzugefügt werden. Sie können diesen Code hinzufügen, indem Sie die .config-Datei bearbeiten oder mithilfe von "An Prozess anfügen" an den Dienst anfügen. Wenn Sie "An Prozess anfügen" für einen Dienst verwenden, wird der Debugcode automatisch der .config Datei hinzugefügt. Danach können Sie debuggen und in den Dienst wechseln, ohne die .config Datei bearbeiten zu müssen.

Einschränkungen beim Austreten aus einem Dienst

Das Verlassen eines Dienstes und die Rückkehr zum Client unterliegt den gleichen Einschränkungen, die für das Betreten eines Dienstes beschrieben sind. Darüber hinaus muss der Debugger an den Client angefügt werden. Wenn Sie einen Client debuggen und in einen Dienst einsteigen, bleibt der Debugger mit dem Dienst verbunden. Dies gilt, ob Sie den Client mithilfe von "Debuggen starten" gestartet oder mithilfe von "An Prozess anfügen" an den Client angefügt haben. Wenn Sie mit dem Debuggen begonnen haben, indem Sie den Dienst anfügen, ist der Debugger noch nicht an den Client angefügt. Wenn Sie in diesem Fall den Dienst verlassen und zum Client zurückkehren müssen, verwenden Sie zuerst „An Prozess anfügen“, um den Client manuell anzubinden.

Einschränkungen beim automatischen Anfügen an einen Dienst

Das automatische Anfügen an einen Dienst hat die folgenden Einschränkungen:

  • Der Dienst muss Teil der Visual Studio-Projektmappe sein, die Sie debuggen.

  • Der Dienst muss gehostet werden. Es kann Teil eines Websiteprojekts (Dateisystem und HTTP), Webanwendungsprojekt (Dateisystem und HTTP) oder WCF-Dienstbibliotheksprojekt sein. WCF-Dienstbibliotheksprojekte können entweder Dienstbibliotheken oder Workflowdienstbibliotheken sein.

  • Der Dienst muss von einem WCF-Client aufgerufen werden.

  • Das Debuggen muss mit dem folgenden Code in der datei app.config oder Web.config aktiviert werden:

    <system.web>
      <compilation debug="true" />
    <system.web>
    

Eigenhosting

Ein selbst gehosteter Dienst ist ein WCF-Dienst , der nicht innerhalb von IIS, dem WCF-Diensthost oder dem ASP.NET Development Server ausgeführt wird. Informationen zum Debuggen eines selbst gehosteten Diensts finden Sie unter How to: Debug a Self-Hosted WCF Service.

Wenn die Fehlermeldung "Automatischer Schritt in den Server nicht möglich" angezeigt wird, reparieren Sie Die Visual Studio-Installation, um das Problem zu beheben. Dies kann passieren, wenn Sie Visual Studio vor der Installation von ASP.NET installieren.