我浏览了这个msdn链接 http://msdn.microsoft.com/en-us/library/ms733025%28v=vs.110%29.aspx
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="CardSpace">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IO.Log">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.Runtime.Serialization">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IdentityModel">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
</configuration>
但不明白
为什么这么多来源&amp;听众标签拥有多个来源&amp;的含义是什么?监听器标签??
如果可能请详细说明多个来源和&amp;配置设置中的监听器标签。
我启用了跟踪,但未在此文件夹c:\log\Traces.svclog
所以有人建议我使用admin特权运行应用程序。当我将我的应用程序分发给任何人时,我怎么知道这个人有管理员特权?
指导我。感谢
答案 0 :(得分:0)
好的,所以你有不同的来源,因为你可能想要在程序的不同部分记录问题/消息。对于WCF Web服务来说,最重要的是System.ServiceModel,因为它将捕获WCF输入/输出流量,但您可能还想记录序列化,IO或IdentityModel(身份验证/授权)的问题。因此,根据您的配置,您有五个源,所有这些源都将使用名为XML的共享侦听器,它将记录您的文本。简而言之,这就是正在发生的事情,但还有更多。
“看不到c:\ log \ Traces.svclog”...如果你的WCF服务正在运行并响应请求,你应该看到一些东西。如果没有,请确保您以“管理员”身份运行服务,或者您运行服务的ID对该文件夹具有读/写访问权限。
“当我将我的应用分发给任何人时,我怎么知道这个人有管理员特权?”好的,是的,我可以将此视为一个问题。这是一段代码,设置一个布尔值,您可以使用1)确定程序是否以“admin”运行,如果不是,则B)指示用户在正确的“admin”权限下重新启动程序:< / p>
private void GetServicePermissionLevel()
{
bool bAdmin = false;
try {
SecurityIdentifier sidAdmin = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
AppDomain myDomain = Thread.GetDomain();
myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsPrincipal myPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
if (myPrincipal.IsInRole(sidAdmin)) {
bAdmin = true;
} else {
bAdmin = false;
}
} catch (Exception ex) {
throw new Exception("Error in GetServicePermissionlevel(): ");
} finally {
_ServiceRunAsAdmin = bAdmin;
}
}
此外,如果您尝试调试WCF服务中的主机端问题,则可能需要为Web主机接口启用此参数:IncludeExceptoinDetailsInFaults = True。默认情况下为false,但如果将其设置为true以显示有关WCF服务故障的更多信息,请确保在进入生产之前将其关闭。
以下是您的设置需要考虑的其他网址:http://www.topwcftutorials.net/2012/06/simple-steps-to-enable-tracing-in-wcf.html
答案 1 :(得分:0)
您的大多数问题都在链接文章中得到解答
System.ServiceModel.MessageLogging: Logs all messages that flow through the system.
System.Runtime.Serialization: Logs when objects are read or written.
等。您可以在不同的跟踪级别上记录不同的信息(例如,错误到数据库,警告到xml文件)。
到另一点:
您可以按要求提出请求管理员上下文,并在此处How to request administrator permissions when the program starts?
进行回答