gpt4 book ai didi

c# - 在 C# 类中访问 HttpContext

转载 作者:行者123 更新时间:2023-12-02 21:31:16 25 4
gpt4 key购买 nike

我正在开发 MVC 应用程序。我创建了一个类来读取媒体目录。我需要在此类中使用 HttpContext,但我总是将 HttpContext.Current.UserHttpContext.Current.Server 作为 。下面是代码

public static async Task<string> GetImagesPath()
{
return await Task.Factory.StartNew<string>(() =>
{
var CustomerNumber = HttpContext.Current.User.Identity.GetCustomerNumber().Result;
if (!string.IsNullOrEmpty(CustomerNumber))
{
return HttpContext.Current.Server.MapPath(string.Format("~/Media/{0}/UserImages/", CustomerNumber));
}
return string.Empty;
});
}

如果有更好的方法来做同样的事情,那将会有很大的帮助。

最佳答案

HttpContext 仅适用于请求线程。不要将其传递给另一个线程; HttpContext 不是线程安全的。

相反,删除对 Task.Factory.StartNew 的调用。在 ASP.NET 上,(几乎)永远没有充分的理由调用 Task.Run 或任何其他方法在线程池线程上执行代码。

public static string GetImagesPath()
{
var CustomerNumber = HttpContext.Current.User.Identity.GetCustomerNumber().Result;
if (!string.IsNullOrEmpty(CustomerNumber))
{
return HttpContext.Current.Server.MapPath(string.Format("~/Media/{0}/UserImages/", CustomerNumber));
}
return string.Empty;
}

关于c# - 在 C# 类中访问 HttpContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com