2015年7月9日木曜日

VisualStudioでサービスにアタッチする以外のWindows サービスデバッグ方法

Debugger.Launch()でデバッグを開始する。

この方法であれば、Windows サービスのコンストラクターであるOnStartメソッドもデバッグ可能になる。デバッグを開始する手順も簡単だが、ソースコードに書き加える必要がある。

OnStartメソッドに「Debugger.Launch()」と書く
サービスを開始する
「Visual Studioでデバッグしますか?」と聞いてくるので、開いておいたVisual Studio(開発環境)を一覧から選ぶ。


WindowsサービスでセルフホストしているWCFのデバッグ

WCFのサービスをデバッグ時に以下のエラーになる場合は、「<compilation debug="true" />」が不足している可能性が高い。
  'XXXX' を自動的にデバッグできません。
  リモート プロシージャはデバッグできません。
  これは通常、サーバー上でデバッグが有効になっていないことを示しています。
  詳細については、ヘルプを参照してください。

WindowsサービスでセルフホストしているWCF サービスをデバッグする場合は、
app.config ファイルでデバッグが有効にされている必要がある。 
<?xml version="1.0"?>
<configuration>
<appSettings>
   <!-- この項目は任意 -->
</appSettings>
<system.web>
  <compilation debug="true" />
<system.web>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- メタデータ情報の開示を避けるには展開する前に下の値を false に設定します -->
          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" />
         
          <!-- 例外の詳細を受け取るには、下の値を true に設定します。 -->
          <serviceDebug includeExceptionDetailInFaults="True" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Windowsサービス登録

\installutil.exe [パス]\サービス.exe Windows サービス解除
\installutil.exe /u [パス]\サービス.exe

参考

C#, Windowsサービスのデバッグ
http://blog.livedoor.jp/nanoris/archives/51755459.html
Windows Serviceのデバッグを簡単に行う方法
http://backyard.hatenablog.com/entry/20130301/1362135598
OnStart メソッドをデバッグする
https://msdn.microsoft.com/ja-jp/library/cktt23yw.aspx?f=255&MSPPError=-2147217396

0 件のコメント:

コメントを投稿