我正在尝试让Ninject与使用自身托管WebApi连接的项目一起工作。
我已经安装了 nuget 包Microsoft ASP.NET Web API 2.2 Self Host (Microsoft.AspNet.WebApi.SelfHost) 以及 Ninject.Web.Common.Selfhost。
控制台应用程序似乎已正确加载,但我似乎仅在点击我的 URL (http://localhost:8081/api/hello) 时出现连接错误。我有一个类似的测试应用程序,它没有使用正常工作的 Ninject。
我正在尝试关注这篇文章:https://github.com/ninject/Ninject.Web.Common/wiki/Setting-up-a-self-hosted-web-application
我错过了什么来解决这个问题吗?我最初尝试使用软件包Microsoft.AspNet.WebApi.OwinSelfHost,但由于各种错误而无法使其运行。如果这是我需要使用的,我可以重新访问它。
public class HelloController : ApiController
{
public string Get()
{
return "Hello, world!";
}
}
class Program
{
static void Main(string[] args)
{
var webApiConfiguration = new HttpSelfHostConfiguration("http://localhost:8081");
webApiConfiguration.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
var mSelfHost = new NinjectSelfHostBootstrapper(CreateKernel, webApiConfiguration);
mSelfHost.Start();
Console.ReadLine();
}
private static IKernel CreateKernel()
{
var mKernel = new StandardKernel();
mKernel.Load(Assembly.GetExecutingAssembly());
return mKernel;
}
}
以下是我安装的软件包:
<packages>
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.SelfHost" version="5.2.2" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
<package id="Ninject" version="3.2.2.0" targetFramework="net45" />
<package id="Ninject.Web.Common" version="3.2.3.0" targetFramework="net45" />
<package id="Ninject.Web.Common.Selfhost" version="3.2.3.0" targetFramework="net45" />
</packages>
我能够通过首先添加Ninject.Web.WebApi.SelfHost来解决这个问题。这会自动加载相应的 WebAPI 包。在我自己加载WebApi包然后添加Ninject之前。