对于我当前的项目,我使用 Dapper。一切都很完美。然后我需要将它部署在共享主机上。结果可以在这里看到(复制 YSOD):
说明:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。
异常详细信息:System.Security.SecurityException:请求“System.Security.Permissions.ReflectionPermission,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败。
堆栈跟踪
[SecurityException:请求'System.Security.Permissions.ReflectionPermission,mscorlib,Version = 4.0.0.0,Culture = Neutral,PublicKeyToken = b77a5c561934e089'类型的权限失败。] System.Security.CodeAccessSecurityEngine.Check(对象需求,StackCrawlMark和stackMark , Boolean isPermSet) +0
System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) +31
System.Security.CodeAccessPermission.Demand() +46
System.Reflection.Emit.DynamicMethod.PerformSecurityCheck(Type owner, StackCrawlMark& stackMark, Boolean跳过可见性)+9461551
System.Reflection.Emit.DynamicMethod..ctor(String name, Type returnType, Type[] parameterTypes, Type owner, Boolean skipVisibility) +40 Dapperx.SqlMapper.CreateParamInfoGenerator(Identity identity) +537 Dapperx.SqlMapper.GetCacheInfo(Identity identity) +376 Dapperx.d__13 1..ctor(IEnumerable 1 源) +58 Dapperx.SqlMapper.Query(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable 1 commandType) +199 ...1.MoveNext() +644
System.Collections.Generic.List1 collection) +327 System.Linq.Enumerable.ToList(IEnumerable
1 commandTimeout, Nullable
有什么方法可以解决它(在.NET 4.0中)?据我了解到目前为止我所阅读的内容,提供者必须允许 IIS 反射的某些部分,这可能对他们构成安全风险......