Refactor WebApi
This commit is contained in:
66
WebApi/App_Start/NinjectWebCommon.cs
Normal file
66
WebApi/App_Start/NinjectWebCommon.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(WebApi.App_Start.NinjectWebCommon), "Start")]
|
||||
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(WebApi.App_Start.NinjectWebCommon), "Stop")]
|
||||
|
||||
namespace WebApi.App_Start
|
||||
{
|
||||
using System;
|
||||
using System.Web;
|
||||
|
||||
using Microsoft.Web.Infrastructure.DynamicModuleHelper;
|
||||
|
||||
using Ninject;
|
||||
using Ninject.Web.Common;
|
||||
|
||||
public static class NinjectWebCommon
|
||||
{
|
||||
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
|
||||
|
||||
/// <summary>
|
||||
/// Starts the application
|
||||
/// </summary>
|
||||
public static void Start()
|
||||
{
|
||||
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
|
||||
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
|
||||
bootstrapper.Initialize(CreateKernel);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Stops the application.
|
||||
/// </summary>
|
||||
public static void Stop()
|
||||
{
|
||||
bootstrapper.ShutDown();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates the kernel that will manage your application.
|
||||
/// </summary>
|
||||
/// <returns>The created kernel.</returns>
|
||||
private static IKernel CreateKernel()
|
||||
{
|
||||
var kernel = new StandardKernel();
|
||||
try
|
||||
{
|
||||
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
|
||||
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
|
||||
|
||||
RegisterServices(kernel);
|
||||
return kernel;
|
||||
}
|
||||
catch
|
||||
{
|
||||
kernel.Dispose();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load your modules or register your services here!
|
||||
/// </summary>
|
||||
/// <param name="kernel">The kernel.</param>
|
||||
private static void RegisterServices(IKernel kernel)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
51
WebApi/App_Start/WebApiConfig.cs
Normal file
51
WebApi/App_Start/WebApiConfig.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Formatting;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace WebApi
|
||||
{
|
||||
public class JsonContentNegotiator : IContentNegotiator
|
||||
{
|
||||
private readonly JsonMediaTypeFormatter _jsonFormatter;
|
||||
|
||||
public JsonContentNegotiator(JsonMediaTypeFormatter formatter)
|
||||
{
|
||||
_jsonFormatter = formatter;
|
||||
}
|
||||
|
||||
public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters)
|
||||
{
|
||||
var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json"));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public static class WebApiConfig
|
||||
{
|
||||
public static void Register(HttpConfiguration config)
|
||||
{
|
||||
// Web API configuration and services
|
||||
|
||||
//DEBUG
|
||||
config.EnableSystemDiagnosticsTracing();
|
||||
|
||||
// Web API routes
|
||||
config.MapHttpAttributeRoutes();
|
||||
|
||||
config.Routes.MapHttpRoute(
|
||||
name: "DefaultApi",
|
||||
routeTemplate: "api/{controller}/{id}",
|
||||
defaults: new { id = RouteParameter.Optional }
|
||||
);
|
||||
|
||||
// Force always json response
|
||||
var jsonFormatter = new JsonMediaTypeFormatter();
|
||||
//optional: set serializer settings here
|
||||
config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user