【问题标题】:Embedded RavenDB not initializing in ASP.NET MVC 5嵌入式 RavenDB 未在 ASP.NET MVC 5 中初始化
【发布时间】:2014-08-15 10:35:05
【问题描述】:

在 MVC5 应用程序中使用 Embedded RavenDB 时遇到问题。我已经使用这里描述的技术,http://ravendb.net/kb/3/using-ravendb-in-an-asp-net-mvc-websiteDocumentStore 添加到系统中,并对其进行初始化。

目前我的Global.asax.cs 文件看起来像:

public static DocumentStore Store;

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);

    var store = new EmbeddableDocumentStore {Conventions = {IdentityPartsSeparator = "-"}, DataDirectory = "~\\App_Data\\Database"};
    store.Configuration.Port = 9090;
    store.UseEmbeddedHttpServer = true;
    //store.RunInMemory = true;

    Store = store;
    try
    {
        Store.Initialize();
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex);
    }

    IndexCreation.CreateIndexes(Assembly.GetCallingAssembly(), Store);
}

现在,当我启动站点时,如果我在 IndexCreation 行或 Debug.WriteLine 行上放置断点,它们将永远被击中。代码命中Store.Initialize(); 调用并且永远不会返回。如果我暂停应用程序,调试器会在 Store.Initialize() 行上显示应用程序。

没有抛出任何错误,App_Data\Database 文件夹包含 RavenDB 数据库的组成部分。来自 Raven 的唯一消息是:

System.ComponentModel.Composition Warning: 1 : The ComposablePartDefinition 'Raven.Database.Server.Security.OAuth.OAuthClientCredentialsTokenResponder' has been rejected. The composition remains unchanged. 调查后,我认为这是一个红鲱鱼,可以忽略。

我在事件查看器中收到的最后一条消息是:

Raven (17148) 1-2HkcFe-F:\Projects\Websites\Test_App\App_Data\Database\Data: The database engine attached a database (1, F:\Projects\Websites\Test_App\App_Data\Database\Data). (Time=0 seconds) 

看起来它正在做正确的事情。它永远不会从 Initialize() 方法返回,因此该站点永远不会加载。我什至尝试在 x86 或 x64 模式下运行,但无济于事。我不知道为什么这没有加载。

如果我取消注释 store.RunInMemory = true; 行,则站点加载并且数据库在那里并且按预期工作,但它显然不会在会话之间持续存在,因此不实用。

那么,我还有什么需要寻找的吗? 有什么我做错了吗? (我故意尝试最简单的方法让服务器运行,因此使用 Global.asax)

【问题讨论】:

  • 9090 端口是免费的吗?尝试另一个端口?可能是绑定到它的问题。尝试一些高得离谱的东西,比如 30000。
  • 您好,9090 端口没问题,在内存中运行时,我可以导航到 http://localhost:9090/ 并查看管理页面。

标签: asp.net-mvc-5 ravendb


【解决方案1】:

我只设法让它与 RavenDB 3x 的嵌入式版本一起工作,我无法让 2.5x 在任何情况下工作,这意味着我使用的是预发布版本,所以有从 ravendb nuget 源中提取:

http://www.myget.org/F/ravendb3

我认为一旦 3x 完全发布,更新到该版本也将解决问题。

编辑 - 现在我们可以使用 nuget 版本,因为 3.x 已发布。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2013-01-24
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多