安全异常 - 在共享主机上使用Dapper

5
对于我的当前项目,我使用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(Object demand, 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 skipVisibility) +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.MoveNext() +644 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +327 System.Linq.Enumerable.ToList(IEnumerable`1 source) +58 Dapperx.SqlMapper.Query(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) +199 ...
有没有办法在.NET 4.0中解决它?
据我所了解,到目前为止我所读的内容,提供程序必须允许IIS的一些反射部分,这可能对他们构成安全风险...

1
我没有看到在没有那个权限的情况下使“dapper”工作的方法 :( - Marc Gravell
@MarcGravell 我发现“来自GAC的代码始终在完全信任下运行”(http://msdn.microsoft.com/en-us/library/87x8e4d1),所以如果我说服他们将Dapper安装到GAC中,问题就解决了,对吧?此外..你可以使用强名称分发Dapper。否则,人们必须手动签名 :) - stej
这绝对值得一试... 我很想听听它的进展。 - Marc Gravell
他们说,如果中等信任级别过于限制,则我们可以订购他们的服务器托管 :( 尝试其他提供商.. - stej
1个回答

2

Reflection.Emit是Dapper使用的技术,但在中等信任级别下是不允许的。

您应该寻找提供完全信任的托管服务商。discountasp.net是我以前使用过的一个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接