How could I make my RavenDB application execute properly when UseEmbeddedHttpServer is set to true using 2-tier architecture?
asp.net-mvc-4, asp.net-web-api, c#, ravendb, web-applications
Solution
The only way I could reproduce the experience you describe is by intentionally creating a port conflict. By default, RavenDB's web server hosts on port 8080, so if you are not changing raven's port, then you must be hosting your WebApi application on port 8080. If this is not the case, please let me know in comments, but I will assume that it is so.
All you need to do to change the port Raven uses is to modify the port value before calling `Initialize` method.
Add this `RavenConfig.cs` file to your `App_Startup` folder:
using Raven.Client;
using Raven.Client.Embedded;
namespace <YourNamespace>
{
public static class RavenConfig
{
public static IDocumentStore DocumentStore { get; private set; }
public static void Register()
{
var store = new EmbeddableDocumentStore
{
UseEmbeddedHttpServer = true,
DataDirectory = @"~\App_Data\RavenDatabase",
// or from connection string if you wish
};
// set whatever port you want raven to use
store.Configuration.Port = 8079;
store.Initialize();
this.DocumentStore = store;
}
public static void Cleanup()
{
if (DocumentStore == null)
return;
DocumentStore.Dispose();
DocumentStore = null;
}
}
}
Then in your `Global.asax.cs` file, do the following:
protected void Application_Start()
{
// with your other startup registrations
RavenConfig.Register();
}
protected void Application_End()
{
// for a clean shutdown
RavenConfig.Cleanup();
}
Problem
I used RavenDB-Embedded 2.0.2230 in my application interacted with ASP .Net Web API in different assemblies. When I set `UseEmbeddedHttpServer = true` on the document store, first time I send a request to RavenDB, it executes properly but when I try for the second time my application displays Raven Studio. When I remove `UseEmbeddedServer` setting, my application runs without any problems. My RavenDB is configured with the following codes in data tier : ``` this.documentStore = new EmbeddableDocumentStore { ConnectionStringName = "RavenDB", UseEmbeddedHttpServer = true }.Initialize(); ``` and implementation of `Web.config` have these settings in the service tier : ``` <connectionStrings> <add name="RavenDB" connectionString="DataDir=~\App_Data\RavenDatabase" /> </connectionStrings> ``` Is there a setting I missed? Is there any settings I need to apply to point Raven Studio to a different port?