2012-12-10 58 views
0

當我使用Visual Studio Development Server運行MVC4我的應用程序時,我的應用程序能夠正確加載所有配置文件。但是,當我嘗試在本地IIS Web服務器下運行它時,它會引發此錯誤IIS尋找MVC配置文件的錯誤路徑

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

它看着錯誤的文件夾。配置文件直接在我的web項目的根目錄下。這是爲什麼發生。我該如何解決它。我非常肯定,nhibernate會尋找這個文件來加載它的屬性。除非你知道如何 NHibernate的移動配置文件到web.config文件中,請不要建議,我得到一個「無法識別的配置節休眠配置」當過我複製過來

編輯: 通過順便說一下,我敢肯定它看着的appSettings以下關鍵我的應用程序設置部分

<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() 

回答

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;