services que net microsoft iservicecollection inyeccion injection extensions dependencyinjection dependency dependencias configureservices asp c# asp.net asp.net-mvc dependency-injection config

c# - que - Error de entorno de aplicación de inyección de dependencia



que es inyeccion de dependencias c# (1)

Todo el día estoy tratando de hacer que esto funcione.

Estoy haciendo una inyección de dependencia a través de este código:

public Startup(IApplicationEnviroment appEnv) { var builder = new ConfigurationBuilder() .SetBasePath(appEnv.ApplicationBasePath) .AddJsonFile("config.json") .AddEnvironmentVariables(); Configuration = builder.Build(); }

Cada vez que estoy ejecutando este código, aparece el siguiente error:

Estoy realmente molesto por eso porque no puedo hacerlo funcionar y no tengo ni idea de ello. Soy relativamente nuevo en Asp.Net y C #, pero así es como me dijo el tutorial. ¿Todos saben cuál es mi problema con el código?

Tal vez este hepls.

#if DEBUG services.AddScoped<IMailService, DebugMailService>(); #else services.AddScoped<IMailService, RealMailService>(); #endif

Mi interfaz:

public interface IMailService { bool SendMail(string to, string from, string subject, string body); }

Mi DebugMailService

public class DebugMailService : IMailService { public bool SendMail(string to, string from, string subject, string body) { Debug.WriteLine($"Sending mail: To: {to}, Subject: {subject}"); return true; } }


Hay dos posibilidades que podría ser:

  1. Tu esquema json en project.json está apuntando al lugar equivocado. El mío es http://json.schemastore.org/project
  2. Su intellisense podría estar dando problemas. El reinicio habitual de Visual Studio funciona la mayoría de las veces, pero si no es así, tiene muchas respuestas para solucionarlo. Solo búscalo.

Como puede ver a continuación, intellisense funciona bien y encuentra IApplicationEnvironment , que existe en Microsoft.Extensions.PlatformAbstractions .

Sin embargo , por suerte en RC1, ya no es necesario incluir ApplicationBasePath en la Configuration() , que existe en IApplicationEnvironment . Lo que significa que es opcional inyectar IApplicationEnvironment en el Startup para su caso. Mis fuentes: here y here .

Así que solo puedes cambiar tu método de inicio de esta manera:

public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .AddEnvironmentVariables(); Configuration = builder.Build().ReloadOnChanged("appsettings.json"); }

Por último, asegúrese de no tener ninguna beta8 versión, definitivamente causará problemas si incluye beta8 con rc1-final paquetes rc1-final en la misma solución. Como dijo que es nuevo en asp.net y también en el uso de config.json , me dice que podría estar confundiendo las versiones beta con las versiones principales de RC asp.net. Aunque puede appsettings.json nombre que desee, la denominación predeterminada se cambió a appsettings.json . Así que de nuevo, asegúrese de que las versiones de su paquete en el archivo project.json en la misma versión.

Espero que esto ayude.