static void Main(string[] args) { //Assembly.Load("WebApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"); //加载外部程序集 var config = new HttpSelfHostConfiguration("http://localhost:8080"); config.Routes.MapHttpRoute( "API Default", "api/{controller}/{id}", new { id = RouteParameter.Optional }); using (var server = new HttpSelfHostServer(config)) { server.OpenAsync().Wait(); Console.WriteLine("Press Enter to quit."); Process.Start("http://localhost:8080/api/xx"); Console.ReadLine(); } }
public class xxController: Controller { public IEnumerable<string> Get() { return new string[] { "111", "222" }; } }
OwinSelfHost
// OWIN host
//**********************************************************************************
static void Main(string[] args)
{
string baseAddress = "http://localhost:9000/";
// Start OWIN host
using (WebApp.Start<Startup>(url: baseAddress))
{
// Create HttpCient and make a request to api/values
HttpClient client = new HttpClient();
var response = client.GetAsync(baseAddress + "api/xx").Result;
Console.WriteLine(response);
Console.WriteLine(response.Content.ReadAsStringAsync().Result);
Console.ReadLine();
}
}
public class Startup
{
// This code configures Web API. The Startup class is specified as a type
// parameter in the WebApp.Start method.
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}
//**********************************************************************************
cross-origin support
var baseAddress = ConfigurationManager.AppSettings["baseAddress"]; var config = new HttpSelfHostConfiguration(baseAddress); config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); var cors = new EnableCorsAttribute("*", "*", "*");//********** config.EnableCors(cors); var server = new HttpSelfHostServer(config); server.OpenAsync().Wait();
class Startup { // Hack from http://stackoverflow.com/a/17227764/19020 to load controllers in // another assembly. Another way to do this is to create a custom assembly resolver Type valuesControllerType = typeof(OWINTest.API.ValuesController); // This code configures Web API. The Startup class is specified as a type // parameter in the WebApp.Start method. public void Configuration(IAppBuilder appBuilder) { // Configure Web API for self-host. HttpConfiguration config = new HttpConfiguration(); // Enable attribute based routing // http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); appBuilder.UseWebApi(config); } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Http; namespace OWINTest.Service.API { [RoutePrefix("api/testing")] public class RoutedController : ApiController { [Route("getall")] public IEnumerable<string> GetAllItems() { return new string[] { "value1", "value2" }; } } } public partial class APIServiceTest : ServiceBase { public string baseAddress = "http://localhost:9000/"; private IDisposable _server = null; public APIServiceTest() { InitializeComponent(); } protected override void OnStart(string[] args) { _server = WebApp.Start<Startup>(url: baseAddress); } protected override void OnStop() { if(_server != null) { _server.Dispose(); } base.OnStop(); } }
https://github.com/danesparza/OWIN-WebAPI-Service