这篇知识库文章说,ASP.NET Response.End()中止了一个帖子.
反射器显示它看起来像这样:
public void End()
{
if (this._context.IsInCancellablePeriod)
{
InternalSecurityPermissions.ControlThread.Assert();
Thread.CurrentThread.Abort(new HttpApplication.CancelModuleException(false));
}
else if (!this._flushing)
{
this.Flush();
this._ended = true;
if (this._context.ApplicationInstance != null)
{
this._context.ApplicationInstance.CompleteRequest();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很苛刻.正如知识库文章所说,以下应用程序中的任何代码Response.End()都不会被执行,这违反了最不惊讶的原则.它几乎就像Application.Exit()在WinForms应用程序中.造成线程终止异常Response.End()不开捕,所以代码周围的try...... finally不会满足.
这让我想知道我是否应该总是避免Response.End().
任何人都可以建议,我什么时候应该使用Response.End(),何时Response.Close()何地HttpContext.Current.ApplicationInstance.CompleteRequest()?
参考:Rick Strahl的博客文章.
根据我收到的输入,我的回答是,是的,Response.End是有害的,但在某些有限的情况下它是有用的.
Response.End()作为一个不可捕获抛出,立即终止HttpResponse在特殊的条件.在调试过程中也很有用. 避免Response.End()完成常规反应.Response.Close()立即关闭与客户端的连接.根据此MSDN博客文章,此方法不适用于正常的HTTP请求处理. 你不太可能有充分的理由来调用这种方法.如何从asp.net中读取数据库创建.CSV文件?任何人都可以建议我如何在asp.net中创建.CSV文件?
提前致谢.
我一直在寻找一种使用 C# 将 json 文件转换为 csv 的方法,反之亦然。我已经搜索过谷歌,但没有得到任何结果。到目前为止,我尝试过的所有关于堆栈溢出的答案都对我不起作用。有谁知道我可以使用哪些工具或教程来了解如何使用 .NET Framework 来完成此任务?通常我会发布我尝试过的内容,但是我显然离这里很远,所以这是毫无意义的。
我正在使用LinqToCSV将列表写入csv文件,如下所示:
var outputFile = ConfigurationManager.AppSettings["OutputFile"];
var context = new CsvContext();
context.Write(cardholders, outputFile, outputDescription);
Run Code Online (Sandbox Code Playgroud)
但是,无论何时运行,它都将覆盖现有的输出文件.如何创建新文件(如果不存在)或追加(如果存在)