Please forgive me this probably stupid question, I am still not too familiar with the ASP.NET architecture in general.
I inherited a large project, and I intend to setup hangfire.io. I understand that I have to somehow initialize the DB context, but I do not want to hardcode it as suggested by the hangfire-docu.
My API\Global.asax.cs
currently looks as follows, the interesting stuff begins after // Hangfire stuff
:
using System.Web.Http;
using System.Web.Http.ExceptionHandling;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using Hangfire;
namespace API
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
log4net.Config.XmlConfigurator.Configure();
GlobalConfiguration.Configuration.Services.Add(typeof(IExceptionLogger), new GlobalExceptionLogger());
GlobalConfiguration.Configuration.Services.Replace(typeof(IExceptionHandler), new GlobalExceptionHandler());
MvcHandler.DisableMvcResponseHeader = true;
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
MapperConfig.RegisterMapper();
// Hangfire stuff
GlobalConfiguration.Configuration.UseSqlServerStorage("HardcodedContextString");
RecurringJob.AddOrUpdate("some-id", () => Console.WriteLine("My hangfire test."), "*/2 * * * 1-5");
}
}
}
My database context myContext
seems to defined inside API\connections.config
which contains the following lines:
<?xml version="1.0"?>
<connectionStrings>
<add name="myContext" connectionString="Data Source=localhost\sqlexpress;Initial Catalog=myContext;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
</connectionStrings>
What shall I put instead of HardcodedContextString
to make ASP.NET read the connection string from the respective configuration file?
PS: Interestingly, both lines underneath // Hangfire stuff
is underlined in red. What do I miss?
Hangfire
is actually installed (see also Hangfire Installation Guide). For Visual Studio Professional 2017, you can do the following:Manage NuGet Packages
.nuget.org
on the right, search forHangfire
using the search bar on the top left.Hangfire
and click Install. You might have to click on Accept when a popup-window appears.using System.Configuration;
in the header ofGlobal.asax.cs
. All following steps will happen within that file.connections.config
:System.Web.Http
like me, you have to replace all appearances ofGlobalConfiguration.xxx
withSystem.Web.Http.GlobalConfiguration.xxx
. This is necessary to avoid a conflict since both packages have a (different)GlobalConfiguration
property.connString
now: Instead ofGlobalConfiguration.Configuration.UseSqlServerStorage("HardcodedContextString");
we have to writePS: From https://stackoverflow.com/a/6134384/1236044 I learned how to obtain the connection string from the config file-- thanks @jbl for pointing me to that. JBL also gave me the hint about the name space conflict.