C# 显示HTML页面源的CSV文件

C# 显示HTML页面源的CSV文件,c#,html,asp.net,visual-studio-2010,csv,C#,Html,Asp.net,Visual Studio 2010,Csv,我正在从ASP.NET页面导出一个CSV文件,但不知怎的,它包含HTML代码,并且应该导出的数据(即29行)不完整(即,从应该导出的29行中,只显示17行,然后是HTML) 这是我的密码: private void WriteToCSV() { var clientId = int.Parse(ddlClients.SelectedValue); var taskTypeId = int.Parse(ddlTaskType.SelectedVal

我正在从ASP.NET页面导出一个CSV文件,但不知怎的,它包含HTML代码,并且应该导出的数据(即29行)不完整(即,从应该导出的29行中,只显示17行,然后是HTML)

这是我的密码:

    private void WriteToCSV()
    {
        var clientId = int.Parse(ddlClients.SelectedValue);
        var taskTypeId = int.Parse(ddlTaskType.SelectedValue);

        var mtComponent = new MainTableComponent();
        var data = mtComponent.GetMainTableRecords(clientId, 0, taskTypeId);

        if (data == null || data.Count == 0)
        {
            ShowAlertMessage("No available data to export.");
            return;
        }

        var callerId = GetClientList().FirstOrDefault(x => x.ClientId == clientId).CallerId;

        string attachment = string.Concat("attachment; filename=CallList_", ddlClients.SelectedItem.Text,
            "_", ddlTaskType.SelectedItem.Text, "_", DateTime.Now.ToString("yyyyMMdd"), ".csv");

        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.AddHeader("content-disposition", attachment);
        HttpContext.Current.Response.ContentType = "text/csv";
        HttpContext.Current.Response.AddHeader("Pragma", "public");

        HttpContext.Current.Response.Write("row,phone1,phone2,phone3,caller_id");

        foreach (var d in data)
            WriteUserInfo(d, callerId);

        HttpContext.Current.Response.End();
    }

    private void WriteUserInfo(MainTableEntity person, string callerId)
    {
        HttpContext.Current.Response.Write(Environment.NewLine);

        StringBuilder stringBuilder = new StringBuilder();
        AddComma(person.RowNumber.ToString(), stringBuilder);
        AddComma(FormatNumber(person.MobileNumber), stringBuilder);
        AddComma("", stringBuilder);
        AddComma("", stringBuilder);
        AddComma(callerId, stringBuilder);
        stringBuilder.Remove(stringBuilder.Length - 1, 1);

        HttpContext.Current.Response.Write(stringBuilder.ToString());
    }

    private void AddComma(string value, StringBuilder stringBuilder)
    {
        value.Replace(",", "");
        stringBuilder.Append(value).Append(",");
    }

    private string FormatNumber(string number)
    {
        if (string.IsNullOrWhiteSpace(number))
            return null;

        string n = number.Replace('-', ' ').Replace(" ", "").Trim();

        return n;
    }
有趣的是,这不会发生在我的本地机器和我们的测试环境上。它只发生在我们的生产环境中


感谢您的帮助。多谢各位

您是否可以选择下载或保存该文件?并尝试取出
HttpContext.Current.Response.End()
这可能是您的问题…该文件是自动下载和保存的。如果删除Response.End(),它不会导致任何问题吗?请查看此处