c# WebRequest HttpBehaviour 错误

c# WebRequest HttpBehaviour error

我写了一些代码:

this.req = (HttpWebRequest)WebRequest.Create(this._urlNBKIMain);
this.req.Accept = this._accept;
this.req.Headers.Add(this._acceptLanguage);
this.req.UserAgent = this._userAgent;
this.req.Host = this._hostNBKI;
this.req.KeepAlive = this._keepAlive;
this.req.AutomaticDecompression = (DecompressionMethods.GZip | DecompressionMethods.Deflate);
this.req.CookieContainer = this.cookieContainer;
ServicePoint servicePoint = this.req.ServicePoint;
PropertyInfo property = servicePoint.GetType().GetProperty("HttpBehaviour", BindingFlags.Instance | BindingFlags.NonPublic);
property.SetValue(servicePoint, 0, null);
this.res = (HttpWebResponse)this.req.GetResponse();

但是,我遇到运行时错误:

System.ArgumentException: It is not possible to convert an object of type "System.Int32" to type "System.Net.HttpBehaviour".
   in System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast)
   in System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
   in System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
   in System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   in System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   in System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
   in System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
   in CheckNBKI.GetMainFormNBKI()

请帮帮我。

您正在尝试将 enum 设置为整数值。您应该改用枚举。由于 enum 不可用(它是 .NET Framework 的内部),您可以使用一些技巧来获取 enum 值的实例:

object val = Convert.ChangeType(0, Enum.GetUnderlyingType(property.PropertyType));

property.SetValue(servicePoint, val, null);

我得到了 here 的一些帮助。