2015-01-28 3 views
1

Ninject가 자체 WebApi 연결을 사용하는 프로젝트에서 작동하게하려고합니다.webapi 자체 호스트가 ninject와 함께 작동하는 데 문제가 발생했습니다.

Ninject.Web.Common.Selfhost와 함께 Nuget 패키지 Microsoft ASP.NET 웹 API 2.2 자체 호스트 (Microsoft.AspNet.WebApi.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 패키지를 사용해 보았지만 다양한 오류로 인해 작동하지 않습니다. 이것이 내가 사용해야 할 필요가 있다면, 나는 이것을 다시 방문 할 수있다.

<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> 
+0

어떤 예외가 있습니까? –

+0

우편 배달부가 이걸 반환합니다 ... 아무런 응답도 얻을 수 없었습니다 http : // localhost : 8081/api/hello에 연결하는 중 오류가 발생한 것 같습니다. 응답 상태는 0입니다. –

+0

피들러를 사용해 보셨습니까? –

답변

0

가 처음 Ninject.Web.WebApi.SelfHost을 추가하여이 문제를 해결 할 수 있었다 :

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; 
    } 
} 

는 여기에 내가 설치 한 패키지입니다. 이렇게하면 적절한 WebApi 패키지가 자동으로로드됩니다. 전에 WebApi 패키지를 직접로드 한 다음 Ninject를 추가했습니다.

관련 문제