C# 是否可以在VisualStudio2010/Framework 4中使用owin自托管WebApi

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.

我正在尝试使用owin运行一个自托管的web api应用程序,就像这里一样

公共类程序
{ 
静态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" }; 
    } 

}