Created
November 12, 2019 10:13
-
-
Save blubbll/34c143d1f2f9cbb565ddf0f99e8a6996 to your computer and use it in GitHub Desktop.
webapi basecontroller c#
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Web; | |
using System.Web.Http; | |
using System.Web.Http.Controllers; | |
using System.Web.Http.Routing; | |
using System.Web.Http.WebHost; | |
using System.Web.Routing; | |
using System.Web.SessionState; | |
namespace filetransfer | |
{ | |
public static class webApiConfig | |
{ | |
public class BaseController : ApiController | |
{ | |
} | |
public static string prefix = "webapi"; | |
public class WebApiCustomDirectRouteProvider : System.Web.Http.Routing.DefaultDirectRouteProvider | |
{ | |
protected override System.Collections.Generic.IReadOnlyList<System.Web.Http.Routing.IDirectRouteFactory> | |
GetActionRouteFactories(System.Web.Http.Controllers.HttpActionDescriptor actionDescriptor) | |
{ | |
return actionDescriptor.GetCustomAttributes<System.Web.Http.Routing.IDirectRouteFactory>(inherit: true); | |
} | |
private readonly string _centralizedPrefix; | |
public WebApiCustomDirectRouteProvider(string centralizedPrefix) | |
{ | |
_centralizedPrefix = centralizedPrefix; | |
} | |
protected override string GetRoutePrefix(HttpControllerDescriptor controllerDescriptor) | |
{ | |
var existingPrefix = base.GetRoutePrefix(controllerDescriptor); | |
if (existingPrefix == null) return _centralizedPrefix; | |
return string.Format("{0}/{1}", _centralizedPrefix, existingPrefix); | |
} | |
} | |
public static void Register(HttpConfiguration config) | |
{ | |
//Vererbung erlauben | |
config.MapHttpAttributeRoutes(new WebApiCustomDirectRouteProvider("webapi")); | |
//Zugriff auf Session ermöglichen | |
var httpControllerRouteHandler = typeof(HttpControllerRouteHandler).GetField("_instance", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); if (httpControllerRouteHandler != null) | |
{ httpControllerRouteHandler.SetValue(null, new Lazy<HttpControllerRouteHandler>(() => new SessionHttpControllerRouteHandler(), true)); } | |
//json statt xml ausgeben | |
config.Formatters.JsonFormatter.MediaTypeMappings | |
.Add(new System.Net.Http.Formatting.RequestHeaderMapping("Accept", "text/html", StringComparison.InvariantCultureIgnoreCase, true, "application/json")); | |
} | |
#region Sitzung im webApi | |
public class SessionControllerHandler : HttpControllerHandler, IRequiresSessionState | |
{ | |
public SessionControllerHandler(RouteData routeData) : base(routeData) | |
{ } | |
} | |
public class SessionHttpControllerRouteHandler : HttpControllerRouteHandler | |
{ | |
protected override IHttpHandler GetHttpHandler(RequestContext requestContext) | |
{ return new SessionControllerHandler(requestContext.RouteData); } | |
} | |
#endregion Sitzung im webApi | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment