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(对象需求,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.List
1 collection) +327 System.Linq.Enumerable.ToList(IEnumerable
1 commandTimeout, Nullable

有什么方法可以解决它(在.NET 4.0中)?据我了解到目前为止我所阅读的内容,提供者必须允许 IIS 反射的某些部分,这可能对他们构成安全风险......

4

1 回答 1

2

在 Medium Trust 中不允许使用 Dapper 使用的 Reflection.Emit。

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

于 2012-08-21T05:05:12.983 回答