public class HTTPServer { public static string ServiceAddress = string.Format("http://{0}:{1}", Common.Config.HTTPServerIP /* IP*/, Common.Config.HTTPServerPort /* */); private HttpSelfHostServer _HTTPserver = null; private static HttpSelfHostConfiguration _config = null; private static HttpSelfHostServer CreateHost() { _config = new HttpSelfHostConfiguration(ServiceAddress); AssembliesResolver assemblyResolver = new AssembliesResolver(); _config.Services.Replace(typeof(IAssembliesResolver), assemblyResolver); _config.Routes.MapHttpRoute( name: "default", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { controller = "Home", id = RouteParameter.Optional }); HttpSelfHostServer server = new HttpSelfHostServer(_config); server.OpenAsync().Wait(); return server; } public void Start() { _HTTPserver = CreateHost(); } public void Stop() { if (_HTTPserver != null) _HTTPserver.CloseAsync().Wait(); } }
DefaultAssembliesResolver
class AssembliesResolver : DefaultAssembliesResolver { public override ICollection<Assembly> GetAssemblies() { ICollection<Assembly> baseAssemblies = base.GetAssemblies(); List<Assembly> assemblies = new List<Assembly>(baseAssemblies); string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Infrastructure.Server.HTTP.Controllers.dll" /*, api */); assemblies.Add(Assembly.LoadFrom(path)); return assemblies; } }
public class UsersController : ApiController { [HttpGet] public object hello() { return "Hello page"; } [HttpPost] public object SendData(int data) { return new HttpResponseMessage(HttpStatusCode.OK); } }
"api/{controller}/{action}/{id}"
Source: https://habr.com/ru/post/242917/
All Articles