问题描述
有没有办法使用IWebHostEnvironment"?在 ASP Core 中的静态类中?
Is there a way to use "IWebHostEnvironment" inside static class in ASP Core?
我的班级:
public class MainHelper
{
private readonly IWebHostEnvironment _hostingEnvironment;
public MainHelper(IWebHostEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
public static void SaveFile(IFormFile file)
{
var path = Path.Combine(_hostingEnvironment.WebRootPath, "uploads");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
using (var fileStream = System.IO.File.Create(Path.Combine(path, file.FileName)))
{
file.CopyTo(fileStream);
}
}
}
我有错误:
var path = Path.Combine(_hostingEnvironment.WebRootPath, "uploads");
错误: c# session 非静态字段方法或属性MainHelper._hostingEnvironment"需要对象引用
Error: c# session an object reference is required for the non-static field method or property 'MainHelper._hostingEnvironment'
请多多指教
推荐答案
也许这样的事情可以帮助您:
Maybe something like that can help you:
public static class MainHelper
{
private static IWebHostEnvironment _hostingEnvironment;
public static bool IsInitialized { get; private set; }
public static void Initialize(IWebHostEnvironment hostEnvironment)
{
if(IsInitialized)
throw new InvalidOperationException("Object already initialized");
_hostingEnvironment = hostEnvironment;
IsInitialized = true;
}
public static void SaveFile(IFormFile file)
{
if(!IsInitialized)
throw new InvalidOperationException("Object is not initialized");
var path = Path.Combine(_hostingEnvironment.WebRootPath, "uploads");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
using (var fileStream = System.IO.File.Create(Path.Combine(path, file.FileName)))
{
file.CopyTo(fileStream);
}
}
}
在此示例中,您应该使用 IWebHostEnvironment
实例在 Startup.cs
等处调用 MainHelper.Initialize
,而不是调用构造函数.在此示例中,您只需初始化一次 MainHelper
.(未测试)
It this sample you should call MainHelper.Initialize
with your IWebHostEnvironment
instance at your Startup.cs
, etc. instead calling constructor. In this sample you can initialize MainHelper
just once. (Not tested)
这篇关于如何使用“IWebHostEnvironment"ASP Core 中的静态类内部的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!