我正在使用以下web.config来启用我的WCF服务的跟踪。虽然文件是在localhost上正常创建的,但是在部署我的服务的服务器上没有创建文件。
<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帐户指定文件夹的写权限。我做错了什么?
答案 0 :(得分:3)
这听起来很像许可问题。
您说您已授予对 ASP.NET帐户的写入权限,但您的服务可能不会在此帐户下运行。
例如,在IIS 7 Windows 2008中,默认帐户名为ApplicationPoolIdentity
。在IIS 6 Windows 2003下,此默认帐户名为NetworkService
。但在这两种情况下,当然可以在IIS控制面板中进行修改。
因此,当您说 ASP.NET帐户以及您已授予权限的帐户时,您的意思并不十分清楚。此外,除了授予写入权限之外,您可能还需要授予修改权限,以便进程可以创建该文件(如果该文件不存在)。否则,您需要先手动创建它。如果您不确定哪个帐户运行您的网络服务,您可以使用SysInternals Process Explorer工具找到它。
同样IIRC日志可能不会立即刷新到日志文件中。它在内存中保留了一段时间,并在一定时间间隔内刷新。重新启动应用程序池可确保立即将内容刷新到文件中。
答案 1 :(得分:0)
您是否在Web服务器上安装了跟踪功能?
答案 2 :(得分:0)
以上答案非常好,值得研究。我还要补充一点,您应该确保在配置文件中启用了消息日志记录。像这样的东西(只是一个例子):
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="false"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"
maxMessagesToLog="3000"
maxSizeOfMessageToLog="2000"/>
</diagnostics>
</system.serviceModel>
我不确定这是否能解决您的问题,但过去曾帮助我解决类似的问题。希望它有所帮助。