如何使用C语言在asp.net中下载xml文件#
我正在使用带有mvc3的web应用程序asp.net。我是mvc3新手。我的网页上有一个下载按钮。单击下载按钮时,我希望能够打开该XML文件 我在ActionResult中尝试了一些代码更改,但没有打开文件。通过使用下面提到的代码,我得到了一个下载弹出窗口。每当我要打开文件时,我都会遇到一些异常,如下所示。有谁能帮我做这件事吗?请帮助我解决此问题。:-) 提前谢谢 我在控制器中的代码是:如何使用C语言在asp.net中下载xml文件#,xml,asp.net-mvc,asp.net-mvc-3,c#-4.0,Xml,Asp.net Mvc,Asp.net Mvc 3,C# 4.0,我正在使用带有mvc3的web应用程序asp.net。我是mvc3新手。我的网页上有一个下载按钮。单击下载按钮时,我希望能够打开该XML文件 我在ActionResult中尝试了一些代码更改,但没有打开文件。通过使用下面提到的代码,我得到了一个下载弹出窗口。每当我要打开文件时,我都会遇到一些异常,如下所示。有谁能帮我做这件事吗?请帮助我解决此问题。:-) 提前谢谢 我在控制器中的代码是: public FileResult Download(string id) { string fid
public FileResult Download(string id)
{
string fid = Convert.ToString(id);
var model = service.GetAllDefinitions().First(x => x.ID == id);
var definitionDetails = new StatisticDefinitionModel(model);
var definition = definitionDetails.ToXml;
string fileName = definitionDetails.Name + ".xml";
string contentType = "text/xml";
return File(Encoding.Unicode.GetBytes(definition), contentType, fileName);
}
例外情况是:
The XML page cannot be displayed
Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later.
--------------------------------------------------------------------------------
A name was started with an invalid character. Error processing resource 'file:///C:/Users/asub/Downloads/fileNamegd...
<
无法显示XML页面
无法使用XSL样式表查看XML输入。请更正错误,然后单击“刷新”按钮,或稍后重试。
--------------------------------------------------------------------------------
名称以无效字符开头。处理资源“”时出错file:///C:/Users/asub/Downloads/fileNamegd...
<
如果您返回文件结果,它将是文件;如果您返回字符串,它将在浏览器中打开 更新: 此代码将返回文件以供下载
public FileResult GetXmlFile()
{
string xml=""; //string presented xml
var stream = new MemoryStream();
var writer = XmlWriter.Create(stream);
writer.WriteRaw(xml);
stream.Position = 0;
var fileStreamResult = File(stream, "application/octet-stream", "xml.xml");
return fileStreamResult;
}
你不能传递字节数组,你需要一个流。只需从定义中传递一个流:
public FileResult Download(string id) {
string fid = Convert.ToString(id);
var model = service.GetAllDefinitions().First(x => x.ID == id);
var definitionDetails = new StatisticDefinitionModel(model);
var definition = definitionDetails.ToXml;
string fileName = definitionDetails.Name + ".xml";
string contentType = "text/xml";
return File(new MemoryStream(Encoding.Unicode.GetBytes(definition)), contentType, fileName);
}
你能给我一个示例结果吗?谢谢你的代码。我使用了你的代码,我得到了一些异常,比如“System.ObjectDisposedException:无法访问封闭流”。你能看看这个吗?哦。我又这样做了。在不使用的情况下使用它(我更新了答案)我删除了using,但仍然在浏览器中遇到一些其他异常,如“XML文档必须有顶级元素。错误处理资源”file:///C:/Users/asub/Downloads/xml.xml““为什么使用contentType”text/xml”?你在客户机上用它做什么?您能说明变量定义中的内容吗?我使用上面的代码“名称以无效字符开头。错误处理资源”file:///C:/Users/asub/AppData/Local/Micros... <“将名称更改为有效的文件名,不能使用基于Windows的操作系统中通常无法使用的奇怪字符。使用类似这样的东西;字符串文件名=新字符串((definitionDetails.Name+“.xml”)。其中(x=>!Path.GetInvalidFileNameChars().Contains(x)).ToArray();