C# 是否可以在VisualStudio2010/Framework 4中使用owin自托管WebApi
我正在尝试使用owin运行一个自托管的web api应用程序,就像这里一样C# 是否可以在VisualStudio2010/Framework 4中使用owin自托管WebApi,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,我正在尝试使用owin运行一个自托管的web api应用程序,就像这里一样 公共类程序 { 静态void Main() { 字符串基地址=”http://localhost:9000/"; //在主机中启动OWIN 使用(WebApp.Start(url:baseAddress)) { Console.WriteLine(“应用程序已启动”); Console.ReadLine(); } } } 公营创业 { //此代码配置Web API。启动类被指定为类型 //WebApp.
公共类程序
{
静态void Main()
{
字符串基地址=”http://localhost:9000/";
//在主机中启动OWIN
使用(WebApp.Start(url:baseAddress))
{
Console.WriteLine(“应用程序已启动”);
Console.ReadLine();
}
}
}
公营创业
{
//此代码配置Web API。启动类被指定为类型
//WebApp.Start方法中的参数。
公共无效配置(IAppBuilder appBuilder)
{
//为自主机配置Web API。
HttpConfiguration config=新的HttpConfiguration();
config.Routes.MapHttpRoute(
名称:“DefaultApi”,
routeTemplate:“api/{controller}/{id}”,
默认值:新建{id=RouteParameter.Optional}
);
appBuilder.UseWebApi(配置);
}
}
公共类值控制器:ApiController
{
//获取api/值
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
}
哪件事
我试图通过nuget安装Microsoft.AspNet.WebApi
(Web Api 2.1),但由于framework 4.5的要求而失败,因此我安装了AspNetWebApi
(Web Api)
但是我在任何地方都找不到扩展方法
UseWebApi
。我必须安装另一个软件包,还是无法使用Framework 4托管web api?可能不是因为自托管软件包依赖于System.web.Http.Owin,后者是在.Net 4.5中构建的。除非您已准备好使用Microsoft源代码在重写托管内容,否则我认为您不能使用OWIN,但您可以使用Visual Studio 2010和.NET Framework 4.0使用以下方法创建自托管web api:
虽然这种方法不推荐用于新设计,但由于现有代码库中的依赖关系,我不得不使用.NETFramework 4.0。这篇文章是用VisualStudio2012编写的,但我刚刚用VisualStudio2010测试了服务器端,它似乎工作正常。我使用了Postman而不是客户端示例。我不是专家,我自己才刚刚开始使用WebApi和OWIN,但是由于WebApi 2是完全异步的,它能在.NET 4上使用而不依赖于吗?WebApi(V1)也有一个位于
System.Web.Http.dll v4.0
和WebApi(V1)中的ApiController类可以使用HttpSelfHostServer(Microsoft.AspNet.WebApi.SelfHost包)自托管,但我正在搜索Owin实现,因为我已经使用Owin托管了Nancyfx。
public class Program
{
static void Main()
{
string baseAddress = "http://localhost:9000/";
// Start OWIN host
using (WebApp.Start<Startup>(url: baseAddress))
{
Console.WriteLine("App started");
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);
}
}
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}