Pregunta

Estoy intentando ninjar los apicontroladores en un papel de trabajador de Azure. Anteriormente he realizado la ninyección con los mismos controladores en un proyecto ASP.NET MVC 5 / WEB API 2 en la misma solución. Otro controlador de prueba no cotectorizado en este proyecto de trabajo de trabajo funciona y sirve los resultados esperados.

Mientras intenta agregar el paquete NINETR NINJECT.WEB.WEBAPI.OWINHOST (versión 3.2.x) ¡Parece que el paquete es? ¿Erroneamente? requiriendo una versión de NINECT ≥ 3.0.0.0 && <3.1.0.0

He intentado

Install-Package Ninject.Web.WebApi.OwinHost -ProjectName WorkerRole1
Install-Package Ninject.Web.WebApi.OwinHost -Pre -ProjectName WorkerRole1
Install-Package Ninject.Web.WebApi.OwinHost -Version 3.2.0 -ProjectName WorkerRole1
Install-Package Ninject.Web.WebApi.OwinHost -Version 3.2.1-unstable-002 -ProjectName WorkerRole1

Pudo agregar con éxito ninject.web.webapi.selfhost, sin embargo, creo que necesito el sabor de Owin y la autohost no pareció instalar NinjectWebCommon.cs o equivalente. No sé dónde alamber Up Ninject al Sohow Anfitrión de Owin en el rol de los trabajadores una vez que tengo éxito en incluir el OWINHOST. Supongo que será scaffold-ed in.

resultado de intentar instalar ninject.web.webapi.owinhost

PM> Install-Package Ninject.Web.WebApi.OwinHost -Pre -ProjectName WorkerRole1
Attempting to resolve dependency 'Ninject.Web.WebApi (≥ 3.2.0-unstable)'.
Attempting to resolve dependency 'Ninject (≥ 3.2.0.0 && < 3.3.0.0)'.
Attempting to resolve dependency 'Ninject.Web.Common (≥ 3.2.0.0 && < 3.3.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi (≥ 5.0 && < 6.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.WebHost (≥ 5.1.2 && < 5.2.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Core (≥ 5.1.2 && < 5.2.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Client (≥ 5.1.2)'.
Attempting to resolve dependency 'Newtonsoft.Json (≥ 4.5.11)'.
Attempting to resolve dependency 'Ninject.Web.Common.OwinHost (≥ 3.0 && < 4.0)'.
Attempting to resolve dependency 'Ninject.Extensions.ContextPreservation (≥ 3.0 && < 4.0)'.
Attempting to resolve dependency 'Ninject (≥ 3.0.0.0 && < 3.1.0.0)'.
Install-Package : Updating 'Ninject 3.2.2.0' to 'Ninject 3.0.1.10' failed. Unable to find versions of 'Ninject.Web.WebApi, Ninject.Web.Common' that are compatible with 'Ninject 3.0.1.10'.
At line:1 char:1
+ Install-Package Ninject.Web.WebApi.OwinHost -Pre -ProjectName WorkerRole1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

PM> 

Probablemente no está relacionado Sin embargo, en la verificación de versiones de paquete instalado en el WorkErlole, tenga en cuenta que una serie de paquetes son específicos de IIS. ¿Se necesitan estos en un anfitrión de Azure WorkErlol Owin? Y específicamente para microsoft.aspnet.webapi.selfhost. Veo la siguiente notación todavía tengo Microsoft.aspnet.webapi.owinselfhost instalado.

Este es un paquete heredado para albergar ASP.NET WEB API dentro de su cuenta proceso (fuera de IIS). Por favor use el Microsoft.aspnet.webapi.owinselfhost paquete para nuevos proyectos.

Paquetes instalados en WorkErrole

PM> Get-Package -ProjectName WorkerRole1

Id                             Version              Description/Release Notes                                                                                                                                                               
--                             -------              -------------------------                                                                                                                                                               
EntityFramework                6.1.0                Entity Framework is Microsoft's recommended data access technology for new applications.                                                                                                
Microsoft.AspNet.Identity.Core 2.0.0                Core interfaces for ASP.NET Identity.                                                                                                                                                   
Microsoft.AspNet.Identity.E... 2.0.0                ASP.NET Identity providers that use Entity Framework.                                                                                                                                   
Microsoft.AspNet.WebApi        5.0.0                This package contains everything you need to host ASP.NET Web API on IIS. ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of client...
Microsoft.AspNet.WebApi.Client 5.1.2                This package adds support for formatting and content negotiation to System.Net.Http. It includes support for JSON, XML, and form URL encoded data.                                      
Microsoft.AspNet.WebApi.Core   5.1.2                This package contains the core runtime assemblies for ASP.NET Web API. This package is used by hosts of the ASP.NET Web API runtime. To host a Web API in IIS use the Microsoft.AspNe...
Microsoft.AspNet.WebApi.Owin   5.1.2                This package allows you to host ASP.NET Web API within an OWIN server and provides access to additional OWIN features.                                                                  
Microsoft.AspNet.WebApi.Owi... 5.1.2                This package allows you to host ASP.NET Web API within your own process using the OWIN HttpListener server. ASP.NET Web API is a framework that makes it easy to build HTTP services ...
Microsoft.AspNet.WebApi.Sel... 5.1.2                This is a legacy package for hosting ASP.NET Web API within your own process (outside of IIS). Please use the Microsoft.AspNet.WebApi.OwinSelfHost package for new projects.            
Microsoft.AspNet.WebApi.Web... 5.0.0                This package contains everything you need to host ASP.NET Web API on IIS. ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of client...
Microsoft.Data.Edm             5.6.1                Classes to represent, construct, parse, serialize and validate entity data models. Targets .NET 4.0, Silverlight 4.0, or .NET Portable Lib with support for .NET 4.0, SL 4.0, Win Pho...
Microsoft.Data.OData           5.6.1                Classes to serialize, deserialize and validate OData payloads. Enables construction of OData producers and consumers. Targets .NET 4.0, Silverlight 4.0 or .NET Portable Lib with sup...
Microsoft.Data.Services.Client 5.6.1                LINQ-enabled client API for issuing OData queries and consuming OData payloads. Supports OData v3. Targets .NET 4.0, Silverlight 4.0 or .NET Portable Lib with support for .NET 4.5, ...
Microsoft.Owin                 2.1.0                Provides a set of helper types and abstractions for simplifying the creation of OWIN components.                                                                                        
Microsoft.Owin.Diagnostics     2.1.0                Provides middleware components to assist in developing OWIN-based applications.                                                                                                         
Microsoft.Owin.Host.HttpLis... 2.1.0                OWIN server built on the .NET Framework's HttpListener class. Currently the default server used for self-hosting.                                                                       
Microsoft.Owin.Hosting         2.1.0                Provides default infrastructure types for hosting and running OWIN-based applications.                                                                                                  
Microsoft.Owin.SelfHost        2.1.0                Includes components needed to host an OWIN-based application in a custom process.                                                                                                       
Microsoft.WindowsAzure.Conf... 2.0.3                Windows Azure Configuration Manager provides a unified API to load configuration settings regardless of where the application is hosted - whether on-premises or in a Cloud Service.    
Newtonsoft.Json                6.0.2                Json.NET is a popular high-performance JSON framework for .NET                                                                                                                          
Ninject                        3.2.2.0              Stop writing monolithic applications that make you feel like you have to move mountains to make the simplest of changes. Ninject helps you use the technique of dependency injection ...
Ninject.Web.Common             3.2.0.0              Bootstrapper for web projects                                                                                                                                                           
Ninject.Web.Common.Selfhost    3.2.0.0              Adds self hosting support to web common.                                                                                                                                                
Ninject.Web.WebApi             3.2.0.0              Extension for Ninject providing integration with ASP.NET MVC WebAPI 2                                                                                                                   
Ninject.Web.WebApi.Selfhost    3.2.0.0              Extension for Ninject providing integration with ASP.NET MVC WebAPI 2 Selfhost                                                                                                          
Owin                           1.0                  OWIN IAppBuilder startup interface                                                                                                                                                      
System.Spatial                 5.6.1                Contains classes and methods that facilitate geography and geometry spatial operations. Targets .NET 4.0, Silverlight 4.0 or .NET Portable Lib with support for .NET 4.0, SL 4.0, Win...
WindowsAzure.Storage           3.1.0.1              This client library enables working with the Windows Azure storage services which include the blob service for storing binary and text data, the table service for storing structured...

PM> 

¿Fue útil?

Solución

Sé que esto es tarde, pero corrí a este mismo problema y encontré esta pregunta a través de una búsqueda de Google.Finalmente, lo puse a su alrededor con -DependencyVersion:

Install-Package Ninject.Web.WebApi.OwinHost -DependencyVersion Highest

Si no desea actualizar todos los paquetes de Nuget dependientes, encontré que instaló manualmente todas las dependencias relacionadas con los ninquites para ninject.web.webapi.owinhost y luego instalar ninject.web.webapi.owinhost también consiguióalrededor del problema.

Otros consejos

Estaba enfrentando el mismo problema hoy y lo resolví por los siguientes Agregue la siguiente implementación de la clase a su proyecto

    public class NinjectDependencyScope : IDependencyScope
        {
            IResolutionRoot resolver;

            public NinjectDependencyScope(IResolutionRoot resolver)
            {
                this.resolver = resolver;
            }

            public object GetService(Type serviceType)
            {
                if (resolver == null)
                    throw new ObjectDisposedException("this", "This scope has been disposed");

                return resolver.TryGet(serviceType);
            }

            public System.Collections.Generic.IEnumerable<object> GetServices(Type serviceType)
            {
                if (resolver == null)
                    throw new ObjectDisposedException("this", "This scope has been disposed");

                return resolver.GetAll(serviceType);
            }

            public void Dispose()
            {
                IDisposable disposable = resolver as IDisposable;
                if (disposable != null)
                    disposable.Dispose();

                resolver = null;
            }
        }

    // This class is the resolver, but it is also the global scope
    // so we derive from NinjectScope.

public class NinjectDependencyResolver : NinjectDependencyScope, IDependencyResolver
{
    IKernel kernel;

    public NinjectDependencyResolver(IKernel kernel)
        : base(kernel)
    {
        this.kernel = kernel;
    }

    public IDependencyScope BeginScope()
    {
        return new NinjectDependencyScope(kernel.BeginBlock());
    }
}

2- entonces en ninjectwebcommon

Agregue la siguiente línea de código a este método CreateKernel (): Globalconfiguration.configuration.dependenceResolver= Nuevo NINJECTDEPENDENCYRESOLVER (Nernel); Por lo tanto, la implementación completa será:

private static IKernel CreateKernel()
        {
           var kernel = new StandardKernel();
            try
            {
                kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
                kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
                // Install our Ninject-based IDependencyResolver into the Web API config
                GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);

                RegisterServices(kernel);
                return kernel;
            }
            catch
            {
                kernel.Dispose();
                throw;
            }
        }

Probé este código, y funciona con éxito

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top