1

次のweb.configを使用して、WCFサービスのトレースを有効にしています。ファイルはローカルホストで通常作成されますが、サービスがデプロイされているサーバーにはファイルが作成されません。

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData= "c:\log\Traces.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

ASP.NETアカウントの指定されたフォルダーへの書き込みアクセス許可を付与しました。私は何が間違っているのですか?

4

3 に答える 3

3

それは許可の問題によく似ています。

ASP.NETアカウントに書き込みアクセス許可を付与したとのことですが、サービスはおそらくこのアカウントでは実行されません。

たとえば、IIS 7 Windows 2008では、デフォルトのアカウントはと呼ばれApplicationPoolIdentityます。IIS 6 Windows 2003では、このデフォルトのアカウントはと呼ばれNetworkServiceます。ただし、どちらの場合も、もちろんIISコントロールパネルで変更できます。

したがって、ASP.NETアカウントと言うときの意味と、アクセス許可を付与したアカウントは明確ではありません。また、書き込み権限を付与することに加えて、ファイルが存在しない場合にプロセスがファイルを作成できるように、変更権限を付与する必要がある場合があります。それ以外の場合は、最初に手動で作成する必要があります。どのアカウントでWebサービスを実行しているかわからない場合は、SysInternalsProcessExplorerツールを使用してそれを見つけることができます。

また、IIRCでは、ログがすぐにログファイルにフラッシュされない場合があります。しばらくの間メモリに保持され、一定の間隔でフラッシュされます。アプリケーションプールを再起動すると、コンテンツがすぐにファイルにフラッシュされます。

于 2012-06-15T12:04:38.787 に答える
0

Webサーバーにトレース機能をインストールしましたか?

于 2012-06-15T12:03:42.540 に答える
0

上記の答えは非常に良く、調べる価値があります。また、構成ファイルでメッセージロギングが有効になっていることを確認する必要があることも付け加えておきます。このようなもの(単なる例):

<system.serviceModel>
    <diagnostics>
        <messageLogging
            logEntireMessage="true"
            logMalformedMessages="false"
            logMessagesAtServiceLevel="true"
            logMessagesAtTransportLevel="false"
            maxMessagesToLog="3000"
            maxSizeOfMessageToLog="2000"/>
    </diagnostics>
</system.serviceModel>

これで問題が解決するかどうかはわかりませんが、過去に同様の問題を解決するのに役立ちました。それが役に立てば幸い。

于 2012-06-15T12:07:51.830 に答える