0

作業中の MVC アプリケーションで NHibernate を使用したいのですが、構成に問題があります。このブログで見つけたセットアップを使用しています。

public class NHibernateHelper
{
    private static ISessionFactory _sessionFactory;

    private static ISessionFactory SessionFactory
    {
        get 
        {
            if (_sessionFactory == null)
            {
                var NHibernateConfig = new Configuration();
                NHibernateConfig.Configure(HttpContext.Current.Server.MapPath(@"Models\NHibernate\hibernate.cfg.xml"));
                NHibernateConfig.AddDirectory(new System.IO.DirectoryInfo(HttpContext.Current.Server.MapPath(@"Models\NHibernate\Mapping")));
                _sessionFactory = NHibernateConfig.BuildSessionFactory();
            }

            return _sessionFactory;
        }  
    }

    public static ISession OpenSession()
    {
        return SessionFactory.OpenSession();
    }
}

接続を機能させようとしてアプリケーションを少しいじっていましたが、次の行でエラーが発生しています。

NHibernateConfig.Configure(HttpContext.Current.Server.MapPath(@"Models\NHibernate\hibernate.cfg.xml"));

エラーは以下です。

{"Could not find a part of the path 'C:\\Users\\%username%\\Documents\\Visual Studio 2010\\Projects\\Helpdesk4\\Helpdesk4\\Ticket\\Models\\NHibernate\\hibernate.cfg.xml'."}

どこに問題があるのか​​はっきりとわかります。「Ticket」ディレクトリはありません。行くべき...Helpdesk4\\Helpdesk4\\Models\\...です。しかし、それがMapPathパスの一部であるべきだと考える理由がわかりません。

それが役立つ場合は、私のファイル_Layout.cshtmlTicketControllerファイルの詳細を次に示します。

チケットコントローラー

    public ActionResult TicketLog()
    {
        IList<Ticket> lstTickets = _repository.getTickets();
        return View(lstTickets);
    }

レイアウト:

                 <nav>
                    <ul id="menu">
                        <li>@Html.ActionLink("Home", "Index", "Home")</li>
                        <li>@Html.ActionLink("About", "About", "Home")</li>
                        <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                        <li>@Html.ActionLink("Ticket Log", "TicketLog", "Ticket")</li>
                    </ul>
                </nav>
4

1 に答える 1

1

Server.MapPath はリクエストからの相対パスを使用するため、最初のリクエストが に対するもの/Ticketsである場合Server.MapPath(@"Models\NHibernate\hibernate.cfg.xml")は、相対的に解決されます/Tickets- したがって、/Tickets/Models/など...

に変更するだけでServer.MapPath(@"~\Models\NHibernate\hibernate.cfg.xml")、構成ファイルが見つかるはずです-"~\"アプリケーションのルートからマップするように指示します

于 2013-09-13T16:20:40.393 に答える