C# 记下IIS 7服务器中的异常原因
我正在用C和.NET Framework 4.0开发一个WCF RESTful服务 我所有的方法都是这样的:C# 记下IIS 7服务器中的异常原因,c#,wcf,iis,C#,Wcf,Iis,我正在用C和.NET Framework 4.0开发一个WCF RESTful服务 我所有的方法都是这样的: public List<User> GetAllUsers() { List<User> usersList = null; OutgoingWebResponseContext ctx = WebOperationContext.Current.OutgoingResponse; try { us
public List<User> GetAllUsers()
{
List<User> usersList = null;
OutgoingWebResponseContext ctx =
WebOperationContext.Current.OutgoingResponse;
try
{
using (var context = new AdnLineContext())
{
context.Configuration.ProxyCreationEnabled = false;
if ((context.Users != null) &&
(context.Users.Count() > 0))
{
usersList = context.Users.ToList();
ctx.StatusCode = System.Net.HttpStatusCode.OK;
}
else
{
// No users found.
ctx.SetStatusAsNotFound();
ctx.SuppressEntityBody = true;
}
}
}
catch (Exception)
{
ctx.StatusCode = System.Net.HttpStatusCode.InternalServerError;
ctx.SuppressEntityBody = true;
}
return usersList;
}
但是当异常发生时,我看不到任何东西
要将ex.消息写入跟踪日志,我必须向每个catch块添加什么
这是我的web.config:
您需要使用该类通知侦听器需要记录某些内容,例如
catch (Exception ex)
{
ctx.StatusCode = System.Net.HttpStatusCode.InternalServerError;
ctx.SuppressEntityBody = true;
System.Diagnostics.Trace.WriteLine(ex.Message, "GetAllUsers"); // log exception
}
错误发生在web.config上。我还没有定义跟踪 我就是这样解决这个问题的:
<system.diagnostics>
<trace autoflush="true" >
<listeners>
<add name="myListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="D:\log\MyProjectTraces.svclog" />
<remove name="Default"/>
</listeners>
</trace>
</system.diagnostics>
谢谢你的回答,但是我已经用你的代码在IIS 7上发布了我的项目,我在MyTraces.svclog上没有得到任何信息。@VansFannel实际上查看你的配置时,你没有任何实际的跟踪级别侦听器-例如,如果你调用throw;在catch块的末尾是否记录了异常?我已经添加了抛出;语句,我没有记录异常。我已将我的web.config添加到我的问题中。@VansFannel-hmm应该可以工作,您的web应用程序是否具有写入该目录的权限?尝试授予它测试的完全权限。
catch (Exception ex)
{
ctx.StatusCode = System.Net.HttpStatusCode.InternalServerError;
ctx.SuppressEntityBody = true;
System.Diagnostics.Trace.WriteLine(ex.Message, "GetAllUsers"); // log exception
}
<system.diagnostics>
<trace autoflush="true" >
<listeners>
<add name="myListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="D:\log\MyProjectTraces.svclog" />
<remove name="Default"/>
</listeners>
</trace>
</system.diagnostics>
catch (Exception ex)
{
ctx.StatusCode = System.Net.HttpStatusCode.InternalServerError;
ctx.SuppressEntityBody = true;
System.Diagnostics.Trace.WriteLine(ex.Message, "GetAllUsers"); // log exception
}