无法让webapi selfhost与ninject一起工作

时间:2015-01-28 14:33:21

标签: asp.net-web-api ninject asp.net-web-api2

我正在尝试让Ninject使用一个使用自托管WebApi连接的项目。

我已经安装了nuget包Microsoft ASP.NET Web API 2.2 Self Host(Microsoft.AspNet.WebApi.SelfHost)以及Ninject.Web.Common.Selfhost。

控制台应用似乎加载正确,但我似乎只是在点击我的网址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>

1 个答案:

答案 0 :(得分:0)

我首先通过添加Ninject.Web.WebApi.SelfHost来解决这个问题。这会自动加载适当的WebApi包。在我自己加载WebApi包然后添加Ninject之前。