【发布时间】:2014-08-15 10:35:05
【问题描述】:
在 MVC5 应用程序中使用 Embedded RavenDB 时遇到问题。我已经使用这里描述的技术,http://ravendb.net/kb/3/using-ravendb-in-an-asp-net-mvc-website 将DocumentStore 添加到系统中,并对其进行初始化。
目前我的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