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:
- Tu esquema json en project.json está apuntando al lugar equivocado. El mío es
http://json.schemastore.org/project
- 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.