Reflection - Почему я не могу получить доступ к этому свойству HttpRequest? - PullRequest
0 голосов
/ 19 августа 2011

Я использую следующий метод для вывода объектов с их свойствами.Он отлично работает с большинством объектов, но выдает, когда я передаю объект HttpRequest.

public static string ConvertToXML(object obj)
{
        if (!obj.GetType().IsPrimitive && obj.GetType() != typeof(String) && obj.GetType() != typeof(Decimal))
        {
            List<string> properties = new List<string>();
            foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj))
            {
                string name = descriptor.Name;
                object value = descriptor.GetValue(obj);
                properties.Add(xmlify(name, value));
            }
            if (properties.Count == 0)
                return obj.ToString();
            else
                return xmlify(obj, string.Concat(properties));
        }
        else
            return obj.ToString();
}

Выдает ошибку в этой строке:

descriptor.GetValue(obj);

Ошибка(извините, у вас только немецкая версия: /):

Der Eigenschaftenaccessor HttpChannelBinding für das System.Web.HttpRequest-Objekt hat folgende Ausnahme verursacht: Die Operation wird auf dieser Plattform nicht unterstützt.

В нем говорится, что средство доступа к свойству для свойства HTTPChannelBinding не поддерживает операцию на этой платформе.

Почему это?

Ответы [ 2 ]

2 голосов
/ 19 августа 2011

RTFM ;-) MSDN сообщает , что:

PlatformNotSupportedException - Текущий объект HttpWorkerRequest не является объектом System.Web.Hosting.IIS7WorkerRequest или System.Web.Hosting..ISAPIWorkerRequestInProc объект.

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

0 голосов
/ 19 августа 2011

Я думаю, что MSDN дает вам больше информации:

Бросает PlatformNotSupportedException, если текущий объект HttpWorkerRequest не является объектом System.Web.Hosting.IIS7WorkerRequest или объектом System.Web.Hosting.ISAPIWorkerRequestInProc.

Должно работать на Windows Vista (SP1) / Windows 7 или Windwods 2008 Server (кроме ядра).Это может быть вашей проблемой.

msdn

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...