反射 - 为什么我无法访问此 HttpRequest 属性?



我使用以下方法输出对象及其属性。它可以很好地处理大多数对象,但是当我传递一个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属性的Property访问器不支持这个平台上的操作。

为什么?

RTFM;-) MSDN声明:

PlatformNotSupportedException -当前HttpWorkerRequest对象不是System.Web.Hosting.IIS7WorkerRequest对象或System.Web.Hosting.ISAPIWorkerRequestInProc对象。

你不应该认为读取一般任何属性的值都不会抛出异常。

我认为MSDN给你更多的信息:

抛出PlatformNotSupportedException,如果当前HttpWorkerRequest对象不是System.Web.Hosting。IIS7WorkerRequest对象或System.Web.Hosting.ISAPIWorkerRequestInProc对象

它应该在Windows Vista (SP1)/Windows 7或Windows 2008服务器(核心除外)上工作。这可能是你的问题。

msdn

相关内容

  • 没有找到相关文章

最新更新