我使用以下方法输出具有其属性的对象。它适用于大多数对象,但在传递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访问器不支持此平台上的操作。
为什么?
答案 0 :(得分:2)
RTFM ;-) MSDN states:
PlatformNotSupportedException
- 当前HttpWorkerRequest
对象不是System.Web.Hosting.IIS7WorkerRequest
对象或System.Web.Hosting.ISAPIWorkerRequestInProc对象。
你不应该假设读取一般任何属性的值都不能抛出异常。
答案 1 :(得分:0)
我认为MSDN为您提供了更多信息:
如果当前的HttpWorkerRequest对象不是System.Web.Hosting.IIS7WorkerRequest对象或System.Web.Hosting.ISAPIWorkerRequestInProc对象,则抛出PlatformNotSupportedException。
它应该适用于Windows Vista(SP1)/ Windows 7或Windwods 2008 Server(核心除外)。 这可能是你的问题。