- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2005でサービスプロジェクトのサービス開始処理でのエラー)
VB2005でサービスプロジェクトのサービス開始処理でのエラー
このQ&Aのポイント
- VB2005の初心者です。サービスプロジェクトを作成していますが、サービスを開始するOnStart処理で例外が発生してしまいました。サービスではなく、通常のFormで同じ処理をするとうまくいくのですが、サービスだとうまくいきません。
- サービスプロジェクトで、クライアントとTCP/IP接続をするのですが、OnStart処理は下記です。Protected Overrides Sub OnStart(ByVal args() As String) Dim LbFlg As Boolean Try G_LogWriter = New clsLoopLogFile() G_LogWriter.Open(Application.StartupPath() + '\EHROrcaService_Logfile.log', 180, 50, True) 'リスナーを作成する 'Gserver = New TcpListener(System.Net.IPAddress.Parse('192.168.7.213'), 8210) 'リスナーを開始する。Stopするまで受信を待機する。 Gserver.Start() 'ワーカースレッドの作成と開始 スレッドにしないとサービスを起動できない G_worker = New Threading.Thread(AddressOf AcceptTcpClient) G_worker.Start() 'リスナーの開始に失敗した場合 Catch ex As Exception LbFlg = WriteLogFile(ex.ToString) LbFlg = WriteLogFile(ex.Source) LbFlg = WriteLogFile(ex.Message) LbFlg = WriteLogFile(ex.InnerException.Tostring) Gserver.Stop Finally End Try End Sub
- G_LogWriter = New clsLoopLogFile() で落ちてしまいます。エラーの内容は下記です。 System.TypeInitializationException: 'EHRcommon.basEhrtascal' のタイプ初期化子が例外をスローしました。 ---> System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。G_LogWriter は、basモジュール、'EHRcommon.basEhrtascal' でPublicで定義されていますが、どうしてもエラーが出てしまいます。質問内容が漠然としているかもしれませんが、通常のFormだとエラーは出ないのに、サービスプロジェクトだとエラーとなるため、困っています。何かヒントになることでも良いので、皆様の知恵をお借りできれば幸いです。よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> G_LogWriter = New clsLoopLogFile() で落ちてしまいます。 clsLoopLogFileコンストラクタで例外が発生している? >エラーの内容は下記です。 本来の例外を握りつぶした上で、Catchで二次バグが発生している? これでは、原因をつかめない。 Try-Catchは適切な範囲で行うべきである。
お礼
回答ありがとうございます。 バグを解析しましたところ、 サービスで、サーバー上のiniファイルを読みにいっているのですが、 うまく読み込めておらず、 フォルダのアクセス権限がなかったことが原因のようでした。 権限を設定すると読み込めないため、 とりあえず権限をなくしたところ、正常に動作するようになりました。 質問内容が的を得ておらず、申し訳ありませんでした。