Before I ask my question I have already gone through the following posts:
- Can't get the OWIN Startup class to run in IIS Express after renaming ASP.NET project file and all the posts mentioned in the question.
- OWIN Startup Detection
- OwinStartupAttribute required in web.config to correct Server Error #884
- OWIN Startup class not detected
Here is my project's folder layout:
Currently there is no controller or view. Just the Owin Startup
file.
Startup.cs
using System;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(Bootstrapper.Startup))]
namespace Bootstrapper
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Run(async context =>
{
await context.Response.WriteAsync(GetTime() + " My First OWIN App");
});
}
string GetTime()
{
return DateTime.Now.Millisecond.ToString();
}
}
}
Web.config
<appSettings>
<add key="owin:AutomaticAppStartup" value="true" />
<add key="owin:appStartup" value="Bootstrapper.Startup" />
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
I have the following reference in the Bootstrapper
project:
- Microsoft.Owin
- Microsoft.Owin.Host.SystemWeb
- Owin
- System
- System.Core
UPDATE:
Forgot to add the error message:
Now,
- WHY is it not working?
- What is the step-by-step process of adding and using an
Owin Startup
class in a very basic project(like accessingHome/Index
)? - How and when does Configuration method in
Owin Startup
class is called/executed?
UPDATE: on 10-Dec-2016
Check the Project-Folder-Layout
. In Bootstrapper
project I have the following file:
IocConfig.cs
[assembly: PreApplicationStartMethod(typeof(IocConfig), "RegisterDependencies")]
namespace Bootstrapper
{
public class IocConfig
{
public static void RegisterDependencies()
{
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
builder.RegisterModule<AutofacWebTypesModule>();
builder.RegisterType(typeof(MovieService)).As(typeof(IMovieService)).InstancePerRequest();
builder.RegisterType(typeof(MovieRepository)).As(typeof(IMovieRepository)).InstancePerRequest();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
}
}
Now I want to execute IocConfig.RegisterDependencies()
in OWIN Startup
class. I am doing using Bootstrapper
in Startup
at the top but, it is not working. I mean I am unable to reference IocConfig
in Startup
. How to resolve this?
Add an empty class into the project root called "Startup.cs"
? I mean I do add a Startup class but not in the root, instead I do the way I have asked in question. Look at theproject-folder-layout
for reference. – Kirtley