Передача исключения HttpHandler - PullRequest
1 голос
/ 10 декабря 2010

Я пытаюсь передать исключение HttpHandler, выполнив следующие действия:

catch (Exception e)
{
    byte[] exceptionData;

    MemoryStream stream = new MemoryStream();
    BinaryFormatter formatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Persistence));
    formatter.Serialize(stream, e);
    exceptionData = stream.ToArray();

    WebClient client = new WebClient();
    Uri handler = new Uri(ApplicationUri, "TransferException.axd");

    #if DEBUG
    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(BypassAllCertificateStuff);
    #endif

    try
    {
        client.UploadData(handler, exceptionData);
    }
    catch (WebException) { }
}

РЕДАКТИРОВАТЬ

Я получаю следующее исключение на клиенте.Строка UploadData ().«Content-Length или Chunked Encoding нельзя установить для операции, которая не записывает данные».

EDIT

Даже если я изменю свой вызов на client.UploadString(место, «ЭТО ТЕСТ!»);это все еще терпит неудачу с тем же самым исключением.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2010

Оказывается, это из-за зарегистрированного обработчика AXD .Net.Когда я изменил расширение на .axdx, все начало работать.

0 голосов
/ 10 декабря 2010

Держу пари, что, поскольку вы никогда не закрываете свой поток, ваш массив имеет нулевую длину.


Попробуйте это:

catch (Exception ex)
{
    byte[] exceptionData;

    using (MemoryStream stream = new MemoryStream())
    {
        BinaryFormatter formatter = new BinaryFormatter(
            null, new StreamingContext(StreamingContextStates.Persistence));
        formatter.Serialize(stream, ex);
        exceptionData = stream.ToArray();
    }

    using (WebClient client = new WebClient())
    {
        Uri handler = new Uri(ApplicationUri, "TransferException.axd");

#if DEBUG
        ServicePointManager.ServerCertificateValidationCallback +=
            new RemoteCertificateValidationCallback(BypassAllCertificateStuff);
#endif

        client.UploadData(handler, exceptionData);
    }
}
...