【问题标题】:Call a MVC action to download the CSV by using console application使用控制台应用程序调用 MVC 操作以下载 CSV
【发布时间】:2017-07-11 10:10:06
【问题描述】:

我正在寻求帮助。我有一个没有 View 的 MVC 动作,这个动作的功能是下载一个 CSV 文件。我想使用控制台应用程序来调用操作以下载文件。

我的控制器:

Public void DownloadCSV()
{
  StringWriter sw = new StringWriter();
  sw.WriteLine("1,2,3,4");
  string remark = "Cool"; // -- Edited
  Response.AddHeader("Content-Disposition", "attachment; filename=Download-"+remark+".csv"); // -- edited
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
        Response.Write(sw);
        Response.End();
}

我的控制台应用程序:

class Program
{
    static void Main(string[] args)
    {
        using (var client = new WebClient())
        {
            string result = client.DownloadString("http://localhost:2114/File/DownloadCSV");
        }

    }
}

此 Web 应用程序需要登录。这就是我无法访问此网址的原因吗?

【问题讨论】:

  • 运行控制台应用程序时会发生什么?
  • @mjwills 我试图运行它但没有任何反应
  • 我无法找到您从控制台应用程序调用 DownloadCSV() 方法的位置。你有没有检查过它的调用与否?
  • 定义nothing happens。你的意思是result 是一个空白字符串吗?还有什么?
  • 如果您使用 Postman,并针对 localhost:2114/File/DownloadCSV 执行 GET,它会显示什么结果? chrome.google.com/webstore/detail/postman/…

标签: c# asp.net-mvc csv console-application


【解决方案1】:
string result = client.DownloadString("http://localhost:2114/File/DownloadCSV");

应该改为:

string pathToLocalFile = @"C:\Report\WhateverTheFileNameYouWant.csv";
// or later as `string pathToLocalFile = @"C:\Report\" + DateTime.Now.ToString() + ".csv";`
client.DownloadFile("http://localhost:2114/File/DownloadCSV", pathToLocalFile);

【讨论】:

  • 哈哈不错,但是字符串结果应该被删除,因为 DownloadFile 是 void 类型。谢谢!
  • 还有一件事,我可以直接从 mvc 控制器获取文件名吗?
  • 不。我想将控制器中的备注值传递给控制台应用程序。有没有办法做到这一点? JSON 怎么样?
  • 好的,我会这样做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
相关资源
最近更新 更多