質問

1年以上前、私はWCFサービスに取り組んでいました。これは、VS 2008を使用して書いたものです。Windowsサービスの下で実行されています。それ以来ずっとそこで走っています。そして残念ながら、他のプロジェクト/優先事項が登場し、今までそのプロジェクトを続けることができませんでした。

今、私はそれに戻ろうとしています。ただし、これは.NET 3.5ではなく、VS 2010と.NET 4を使用できるかどうかを確認しようとしています。 svcutilを実行するためにコマンドプロンプトを作成し、WSDL情報を取得しました。これを作成しようとしている新しいWPFアプリの構成ファイルに入れます。唯一のことは、サーバーに到達できないと言って、エラーが発生し続けています。

そこで、サーバーから.exe.configファイルをマシンにコピーして、svcconfigeditorで編集できました。私はそれらの変更を加え、サーバーに戻し、svcutilを実行しようとしている間にエラーを受けましたが、それよりも悪いことに、表示される.svclogファイルが表示されませんでした。そこで、サーバーのサービスアプリに入りました。 1年前に書いたWindowsサービスを見つけました。それが走っているのを見て、停止して再び始めました。

今、私は別の問題を抱えています。私のWindowsサービスは始まりますが、すぐに停止します。このメッセージは、サービスが開始されてから停止し、パフォーマンスログやアラートサービスなどのさまざまな種類のサービスで発生することもあると言っています。サーバー上のイベントログをチェックしましたが、このWindowsサービスに関連する唯一のことは、開始状態に入ってから停止状態に入ったことです。

ああ、それを4回起動しようとした後、最終的にイベントログにエラーが発生しました! (そもそもなぜそれをしなかったのですか?そして、誰が同じことを何度も何度もやろうとし、異なる結果を期待することは、明らかに最初の3回は何も登録しなかったときに狂気の兆候ですイベントログでは、4日目に試してみました。)

これがエラーです:

イベントタイプ:エラーイベントソース:Service1イベントカテゴリ:なしイベントID:0日付:5/4/2011時間:10:14:46 AMユーザー:N/Aコンピューター:HELIOS説明:サービスは開始できません。 System.TypeInitializationException: 'System.servicemodel.diagnosticutility'のタイプ初期イザーは例外を投げました。 ---> System.Configuration.ConfigurationErrorSexception:クラスSystem.diagnostics.xmlwriterTraceListener、System、version = 4.0.0.0、Culture = neutral、publicKeyToken = B77A5C561934E089のタイプを見つけることができませんでした。 System.diagnostics.traceutils.getRuntimeObject(string className、type basetype、string initializedata)で

そして、これがsvcconfigeditorによって.configファイルに入れられるコードの新しいセクションです。

<sharedListeners>
<add initializeData="C:\Program Files\ASIWindowsService\ASIWindowsService_tracelog.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
<add initializeData="C:\Program Files\ASIWindowsService\ASIWindowsService_messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
役に立ちましたか?

解決

この質問はコメントで答えられましたが、Visual Studio 2010で見たGotchaがあり、同様の状況につながる可能性があります。

ターゲットフレームワークがWCFプロジェクトのバージョン3.xに設定されている場合でも、2010 SVCCONFIGEDITORを使用すると、「System.Diagnostics.xmlwriterTraceListener、System、バージョン= 4.0.0.0 ...」を自動的に挿入しますが、「システムを挿入する必要があります。 diagnostics.xmlwritertraceListener、system、version = 2.0.0.0 ... "これは、ApppoolがあるIISホストサービスに変更されたweb.configを展開するときに噛み付きます いいえ .NET 4.0フレームワークを使用するように構成されています。修正は、web.configを「バージョン= 2.0.0.0」に戻すだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top