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 我的应用设置部分中的以下键

<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 回答