ASP.NET 5 无法使用 Response
ASP.NET 5 can't use Response
我正在尝试使用 ASP.Net 将信息从我的数据库输出到 Excel 文件。在我的控制器中,我有两种方法。
public void ExportData()
{
var data = new[]{
new{ Name="Ram", Email="ram@techbrij.com", Phone="111-222-3333" },
new{ Name="Shyam", Email="shyam@techbrij.com", Phone="159-222-1596" },
new{ Name="Mohan", Email="mohan@techbrij.com", Phone="456-222-4569" },
new{ Name="Sohan", Email="sohan@techbrij.com", Phone="789-456-3333" },
new{ Name="Karan", Email="karan@techbrij.com", Phone="111-222-1234" },
new{ Name="Brij", Email="brij@techbrij.com", Phone="111-222-3333" }
};
System.Web.HttpContext.Current.Response.ClearContent();
System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=Contact.xls");
System.Web.HttpContext.Current.Response.AddHeader("Content-Type", "application/vnd.ms-excel");
WriteTsv(data, System.Web.HttpContext.Current.Response.Output);
System.Web.HttpContext.Current.Response.End();
}
public void WriteTsv<T>(IEnumerable<T> data, TextWriter output)
{
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
foreach (PropertyDescriptor prop in props)
{
output.Write(prop.DisplayName); // header
output.Write("\t");
}
output.WriteLine();
foreach (T item in data)
{
foreach (PropertyDescriptor prop in props)
{
output.Write(prop.Converter.ConvertToString(
prop.GetValue(item)));
output.Write("\t");
}
output.WriteLine();
}
}
我被迫使用 System.Web 因为我不知道如何使用 ASP.Net 5 导出 excel 文件,因此我我目前正在使用 dnx451。我从 project.json 中删除了 dnxcore50 以便使用 System.Web.
但是调用top方法时,出现如下错误:
NullReferenceException: Object reference not set to an instance of an object.
在
System.Web.HttpContext.Current.Response.ClearContent();
本代码使用的原例子:
Response
而不是:
System.Web.HttpContext.Current.Response
我不能只使用 Response 因为它使用 Microsoft.AspNet.Http.HttpResponse 而不是 System.Web
使用 System.Web.HttpResponse 也不起作用,因为它会出现以下错误:
An object reference is required for the non-static field, method, or property
这是我的第一个 Web 应用程序,这个问题让我陷入了停顿。谁能帮帮我?
您不能使用 System.Web。 ASP.Net Core 的目标之一是消除对 System.Web 的依赖。由于 ASP.Net Core 不依赖于 System.Web HttpContext 等。不会被初始化,因此 NRE。您可以使用 IHttpContextAccessor
在 ASP.Net Core 中获取 HttpContext 并从那里访问 Response
。
我正在尝试使用 ASP.Net 将信息从我的数据库输出到 Excel 文件。在我的控制器中,我有两种方法。
public void ExportData()
{
var data = new[]{
new{ Name="Ram", Email="ram@techbrij.com", Phone="111-222-3333" },
new{ Name="Shyam", Email="shyam@techbrij.com", Phone="159-222-1596" },
new{ Name="Mohan", Email="mohan@techbrij.com", Phone="456-222-4569" },
new{ Name="Sohan", Email="sohan@techbrij.com", Phone="789-456-3333" },
new{ Name="Karan", Email="karan@techbrij.com", Phone="111-222-1234" },
new{ Name="Brij", Email="brij@techbrij.com", Phone="111-222-3333" }
};
System.Web.HttpContext.Current.Response.ClearContent();
System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=Contact.xls");
System.Web.HttpContext.Current.Response.AddHeader("Content-Type", "application/vnd.ms-excel");
WriteTsv(data, System.Web.HttpContext.Current.Response.Output);
System.Web.HttpContext.Current.Response.End();
}
public void WriteTsv<T>(IEnumerable<T> data, TextWriter output)
{
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
foreach (PropertyDescriptor prop in props)
{
output.Write(prop.DisplayName); // header
output.Write("\t");
}
output.WriteLine();
foreach (T item in data)
{
foreach (PropertyDescriptor prop in props)
{
output.Write(prop.Converter.ConvertToString(
prop.GetValue(item)));
output.Write("\t");
}
output.WriteLine();
}
}
我被迫使用 System.Web 因为我不知道如何使用 ASP.Net 5 导出 excel 文件,因此我我目前正在使用 dnx451。我从 project.json 中删除了 dnxcore50 以便使用 System.Web.
但是调用top方法时,出现如下错误:
NullReferenceException: Object reference not set to an instance of an object.
在
System.Web.HttpContext.Current.Response.ClearContent();
本代码使用的原例子:
Response
而不是:
System.Web.HttpContext.Current.Response
我不能只使用 Response 因为它使用 Microsoft.AspNet.Http.HttpResponse 而不是 System.Web
使用 System.Web.HttpResponse 也不起作用,因为它会出现以下错误:
An object reference is required for the non-static field, method, or property
这是我的第一个 Web 应用程序,这个问题让我陷入了停顿。谁能帮帮我?
您不能使用 System.Web。 ASP.Net Core 的目标之一是消除对 System.Web 的依赖。由于 ASP.Net Core 不依赖于 System.Web HttpContext 等。不会被初始化,因此 NRE。您可以使用 IHttpContextAccessor
在 ASP.Net Core 中获取 HttpContext 并从那里访问 Response
。