0

ASP.NET 4.0 で記述された Web アプリケーションを、中程度の信頼を使用してローカルで動作させようとしています。私は Go Daddy を Web ホストとして使用しており、彼らは共有ホストで中程度の信頼を使用しています。nHibernate が 3.3 ですぐに使用できる中信頼サイトで動作するようになったことを読みましたが、私の人生で動作させることはできません。

単に追加するだけで:

<trust level="Medium" />

私のweb.configに、私のWebアプリケーションは次のエラーとスタックトレースで爆発します:

Request for the permission of type 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark)
   at System.Security.CodeAccessPermission.Demand()
   at System.Reflection.Emit.DynamicMethod.PerformSecurityCheck(Type owner, StackCrawlMark& stackMark, Boolean skipVisibility)
   at System.Reflection.Emit.DynamicMethod..ctor(String name, Type returnType, Type[] parameterTypes, Type owner, Boolean skipVisibility)
   at NHibernate.Bytecode.Lightweight.ReflectionOptimizer.CreateDynamicMethod(Type returnType, Type[] argumentTypes)
   at NHibernate.Bytecode.Lightweight.ReflectionOptimizer.GenerateGetPropertyValuesMethod(IGetter[] getters)
   at NHibernate.Bytecode.Lightweight.ReflectionOptimizer..ctor(Type mappedType, IGetter[] getters, ISetter[] setters)
   at NHibernate.Bytecode.Lightweight.BytecodeProviderImpl.GetReflectionOptimizer(Type mappedClass, IGetter[] getters, ISetter[] setters)
   at NHibernate.Tuple.Entity.PocoEntityTuplizer.SetReflectionOptimizer()
   at NHibernate.Tuple.Entity.PocoEntityTuplizer..ctor(EntityMetamodel entityMetamodel, PersistentClass mappedEntity)
   at NHibernate.Tuple.Entity.EntityEntityModeToTuplizerMapping..ctor(PersistentClass mappedEntity, EntityMetamodel em)
   at NHibernate.Tuple.Entity.EntityMetamodel..ctor(PersistentClass persistentClass, ISessionFactoryImplementor sessionFactory)
   at NHibernate.Persister.Entity.AbstractEntityPersister..ctor(PersistentClass persistentClass, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory)
   at NHibernate.Persister.Entity.SingleTableEntityPersister..ctor(PersistentClass persistentClass, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory, IMapping mapping)
   at NHibernate.Persister.PersisterFactory.CreateClassPersister(PersistentClass model, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory, IMapping cfg)
   at NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners)
   at NHibernate.Cfg.Configuration.BuildSessionFactory()
   at NHibernate.DataAccess.WebTest.Code.NHibernateHelper.get_SessionFactory()
   at NHibernate.DataAccess.WebTest.Code.NHibernateHelper.OpenSession()
   at NHibernate.DataAccess.WebTest._Default.Page_Load(Object sender, EventArgs e)
   at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
   at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
   at System.Web.UI.Control.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

これは私が読んだのと同じエラーのようですが、これまでに見つけた修正はどれもうまくいかないようです。NHibernate.DependencyInjection Nuget パッケージも試してみましたが、同じエラーでエラーが発生しますが、Initializer ctor で発生するスタック トレースが異なります。

この作業を行うには明らかな何かが欠けているように感じますが、指を置くことはできません。nHibernate 3.3.1 を中程度の信頼で実行して成功した人はいますか?

4

2 に答える 2

2

adoバッチ処理をオフにすることで、これを機能させることができました。ここで答えを見つけましたhttp://blog.ondrejsv.com/post/N2CMS-NHibernate-SqlCommandSet-and-medium-trust.aspx。警告、これはまだ本番環境に移行していません。これは私のラップトップ(YMMV)にあるだけです。

<property name="adonet.batch_size">0</property>

NHibernate.DependencyInjection パッケージを試しましたが、うまくいきませんでした。

お役に立てれば。

于 2012-10-02T19:59:35.070 に答える
1

NH 3.3.1 を中程度の信頼プロバイダーですぐに使用できます。しかし、あなたを助けるために何か他のものがあるかもしれません. Ranzlee によってこのパッケージをインストールします:-

PM> Install-Package NHibernate.DependencyInjection

起動して実行するには、使用するだけです

protected void Application_Start() {
  Initializer.RegisterBytecodeProvider();
  ...
  Rest of configuration code here
}
于 2012-08-25T17:30:22.887 に答える