我有WebHostBufferPolicySelector
public class MyBufferPolicySelector : WebHostBufferPolicySelector
{
private const string _STREAMING_CONTENT_IDENTIFIER = "multipart";
public override bool UseBufferedInputStream(object hostContext)
{
var httpContext = hostContext as HttpContextBase;
bool? stream = !httpContext?.Request.ContentType.StartsWith(_STREAMING_CONTENT_IDENTIFIER);
return stream.HasValue ? stream.Value : true;
}
}
但是当这个dll试图在运行时加载时,我看到了以下错误
重写成员时违反了继承安全规则:'System.Web.Http.WebHost.WebHostBufferPolicySelector.UseBufferedInputStream(System.Object)'。覆盖方法的安全性可访问性必须与要覆盖的方法的安全性可访问性相匹配。
好的,非常清楚,让我们深入研究Code Access Security的东西(我在.NET 4.5上)。
据我所知(根据其元数据),WebHostBufferPolicySelector
及其成员透明。
我尝试过的事情:
UseBufferedResponseStream
base.RelevantMember
无论如何,我都会收到相同的错误消息。
更新:尝试[assembly: System.Security.AllowPartiallyTrustedCallers]
让我遇到了UseBufferedInputStream
的安全问题,但我仍然在此程序集中的其他类上遇到相同的错误消息,源自System.Exception
。
更多情境
可能相关的一些事情,但我不确定如何排除它们:
System.Web.Mvc.DefaultControllerFactory
Ninject.IKernel.Load(<dll containing *MyBufferPolicySelector*>)
时发生错误
参考文献(其中包括):