При попытке записать сообщение Diagnostics.Trace из сборки, используемой приложением ASP.NET, я получаю странную прерывистую ошибку.Это .NET 3.5 на IIS7.
Настройка кода такова, что когда в web.config задана отладка, я добавляю экземпляр HttpResponseTraceListener
в System.Diagnostics.Trace.Listeners
.Я делаю это таким образом, чтобы в другой моей сборке я мог записывать отладочную информацию при работе на тестовом сервере, которую я не настроил для отладки с помощью Visual Studio.Поэтому в моей другой сборке я использую System.Diagnostics.Trace.WriteLine
для вывода информации, которая затем также записывается в поток ответов (встроенный, но для моей цели это просто отлично).
Ошибка:
Ссылка на объект не установлена для экземпляра объекта.
Соответствующая информация стека:
в System.Web.Util.StringUtil.memcpyimpl (Byte * src, Byte * dest,Int32 len) в System.Web.Util.StringUtil.UnsafeStringCopy (String src, Int32 srcIndex, Char [] dest, Int32 destIndex, Int32 len) в System.Web.HttpWriter.Write (String s) в System.Web.HttpResponse.Записать (String s) в SSO.HttpResponseTraceListener.Write (String message) в HttpResponseTraceListener.cs: строка 23 в SSO.HttpResponseTraceListener.WriteLine (String message) в HttpResponseTraceListener.cs: строка 30 в SystemTiagnest.Inter.Inter.)
Класс TraceListener выглядит следующим образом:
public class HttpResponseTraceListener : TraceListener
{
public System.Web.HttpResponse Response { get; private set; }
public HttpResponseTraceListener(System.Web.HttpResponse response)
{
Response = response;
}
public override void Write(string message)
{
if (!string.IsNullOrEmpty(message)
&& null != Response
&& null != Response.OutputStream
&& Response.OutputStream.CanWrite)
{
Response.Write(System.Web.HttpUtility.HtmlEncode(message));
}
}
public override void WriteLine(string message)
{
this.Write(message);
Response.Write("<BR />");
}
}