0

Visual Studio Development Server を使用して MVC4 アプリケーションを実行すると、アプリケーションはすべての構成ファイルを正しくロードできます。しかし、ローカル IIS Web サーバーで実行しようとすると、このエラーがスローされます

{"Could not find a part of the path 'C:\\Windows\\SysWOW64\\inetsrv\\~\\nhibernate.config'."}

間違ったフォルダを見ています。構成ファイルは、Web プロジェクトのルートに直接あります。なぜこうなった。どうすれば修正できますか。プロパティをロードするために、nhibernate がこのファイルを検索すると確信しています。nhibernate 構成ファイルを web.config ファイルに移動する方法を知らない限り、お勧めしません。コピーするたびに「認識されない構成セクション hibernate-configuration」が表示されます。

編集:ちなみに、 appSettings my app settings セクションの次のキーを見ていると確信しています

<add key="nhibernate.config" value="~/nhibernate.config" />

Edit2: これは、Nhibernate がこの値を取得し、構成ファイルを見つけようとする方法に関するスタック トレースです。

at NHibernate.Cfg.ConfigurationSchema.HibernateConfiguration..ctor(XmlReader hbConfigurationReader, Boolean fromAppSetting)
at NHibernate.Cfg.ConfigurationSchema.HibernateConfiguration..ctor(XmlReader hbConfigurationReader)
at NHibernate.Cfg.Configuration.Configure(XmlReader textReader)
at NHibernate.Cfg.Configuration.Configure(String fileName, Boolean ignoreSessionFactoryConfig)
at NHibernate.Cfg.Configuration.Configure(String fileName)
at AndroMDA.NHibernateSupport.DefaultSessionManager.BuildSessionFactory()
4

1 に答える 1

0

したがって、このファイルを使用していたのは実際にはNHibernateではありませんでした。上司はAndroMDAと呼ばれるものを使用してコードを生成することにしました。その生成の一部は、私が見ることができなかったNHibernateサポートでした。

興味のある方は、ISessionManagerの新しい実装を作成しました。これは、次のメンバー関数と変数を除いて、DefaultSessionManagerとまったく同じように見えます。

public class ServerMapSessionManager : ISessionManager
{
    //other interface implementation...//
    public static HttpServerUtility Server { get; set; }
    public String TranslateConfigPath(String virtualPath)
    {
        return Server.MapPath("/"+virtualPath);
    }
}

次に、App_startで次のように呼び出します

        SessionManagerFactory.SessionManager = new MVCFramework.Core.Common.ServerMapSessionManager();
        MVCFramework.Core.Common.ServerMapSessionManager.Server = Server;
于 2012-12-10T22:24:24.983 に答える