如何使用C语言在asp.net中下载xml文件#

如何使用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

我正在使用带有mvc3的web应用程序asp.net。我是mvc3新手。我的网页上有一个下载按钮。单击下载按钮时,我希望能够打开该XML文件

我在ActionResult中尝试了一些代码更改,但没有打开文件。通过使用下面提到的代码,我得到了一个下载弹出窗口。每当我要打开文件时,我都会遇到一些异常,如下所示。有谁能帮我做这件事吗?请帮助我解决此问题。:-)

提前谢谢

我在控制器中的代码是:

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();