3
ミドルウェアのカスタム部分が作成され、それ自身のクラスに配置されている場合、Asp.Net Coreではミドルウェア内部からIHostingEnvironment
にアクセスするにはどうすればよいですか?ミドルウェアクラスのIHostingEnvironmentへのアクセス方法
例えば以下のクラスでは、IHostingEnvironment
をcontstructorに注入できると思っていましたが、常にnullです。 IHostingEnvironment
にアクセスする方法に関する他のアイデアはありますか?
public class ForceHttps {
private readonly RequestDelegate _next;
private readonly IHostingEnvironment _env;
/// <summary>
/// This approach to getting access to IHostingEnvironment
/// doesn't work. It's always null
/// </summary>
/// <param name="next"></param>
/// <param name="env"></param>
public ForceHttps(RequestDelegate next, IHostingEnvironment env) {
_next = next;
}
public async Task Invoke(HttpContext context) {
string sslPort = "";
HttpRequest request = context.Request;
if(_env.IsDevelopment()) {
sslPort = ":44376";
}
if(request.IsHttps == false) {
context.Response.Redirect("https://" + request.Host + sslPort + request.Path);
}
await _next.Invoke(context);
}
}
私の悪いに追加します。後でInvokeメソッドの_envはnullです。額に手を差し伸べる!私はそれをInvokeメソッドに注入できることを知ることは素晴らしいことです。 –