在MVC中下载文件时自定义配置部分错误

本文关键字:自定义 配置部 错误 文件 MVC 下载 | 更新日期: 2023-09-27 17:51:04

我在我的网页中使用自定义配置部分。配置。NET MVC 5项目。它工作得很好,直到我尝试通过链接下载文件:

<a href="@Url.Action("Download", new { id = Model.Id })">...
以下是我在控制器中处理下载的方法:
return new FileStreamResult(myStream, "application/octet-stream")
{
    FileDownloadName = "MyFile.someExt"
}

我要重申,我的自定义配置工作良好,除了当我点击上面提到的下载链接。然后我得到一个错误:

Unrecognized element 'link'.

link是自定义配置节的子元素,即

<navigationMenu>
    <link ...

编辑1:这可能是有用的信息,我正在访问我的自定义配置部分以这种方式:

XDocument.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
    .Root.Element("navigationMenu");

然而,它在web的<configSections />中被正确注册。配置,即

<!-- From web.config -->
<section name="navigationMenu" type="MySite.Helpers.NavigationMenuSection, MySite" />
// With the config section class declared like so:
public class NavigationMenuSection : ConfigurationSection
{ }

但我要再次强调,这工作得很好,直到我点击下载链接。为什么内容类型会导致问题?

在MVC中下载文件时自定义配置部分错误

如果您通过自定义方式访问您的"section",而不使用。net配置机制,您不妨将该类型注册为System.Configuration.IgnoreSection。这将使修改配置对象变得更容易,而不必镜像配置文件中的更改。你甚至不需要从任何。net Configuration对象中派生你的对象。