对于我目前的项目,我使用Dapper。一切都很完美。然后我需要在共享主机上部署它。结果可以在这里看到(复制YSOD):
描述:应用程序尝试不执行操作 安全政策允许。授予此应用程序 必要的权限请联系您的系统管理员或更改 应用程序在配置文件中的信任级别。
异常详细信息:System.Security.SecurityException:请求 'System.Security.Permissions.ReflectionPermission类型的权限, mscorlib,版本= 4.0.0.0,文化=中性, PublicKeyToken = b77a5c561934e089'失败。
堆栈跟踪
[SecurityException:请求类型的权限 'System.Security.Permissions.ReflectionPermission,mscorlib, Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089' 失败。] System.Security.CodeAccessSecurityEngine.Check(Object 需求,StackCrawlMark& stackMark,Boolean isPermSet)+0
System.Security.CodeAccessSecurityEngine.Check(的CodeAccessPermission cap,StackCrawlMark& stackMark)+31
System.Security.CodeAccessPermission.Demand()+46
System.Reflection.Emit.DynamicMethod.PerformSecurityCheck(类型所有者, StackCrawlMark&安培; stackMark,Boolean skipVisibility)+9461551
System.Reflection.Emit.DynamicMethod..ctor(String name,Type returnType,Type [] parameterTypes,Type owner,Boolean skipVisibility) +40 Dapperx.SqlMapper.CreateParamInfoGenerator(身份标识)+537 Dapperx.SqlMapper.GetCacheInfo(身份标识)+376 Dapperx.d__131.MoveNext() +644
1..ctor(IEnumerable
System.Collections.Generic.List1 collection) +327 System.Linq.Enumerable.ToList(IEnumerable
1 source)+58
Dapperx.SqlMapper.Query(IDbConnection cnn,String sql,Object param, IDbTransaction事务,布尔缓冲,可为空1 commandTimeout, Nullable
1 commandType)+199
...
有没有办法解决它(在.NET 4.0中)? 据我所知,到目前为止我所阅读的内容,提供商必须允许一些部分来反映IIS,这可能会给他们带来安全风险......
答案 0 :(得分:2)
在Medium Trust中不允许使用Dapper使用的Reflection.Emit。
您应该找到提供完全信任的托管服务提供商。 discountasp.net是我以前用过的。