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

时间:2015-05-28 16:14:39

标签: c# asp.net-mvc web-config configsection

我在ASP.NET MVC 5项目的web.config中使用自定义配置部分。它完全正常,直到我尝试通过链接下载文件:

<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.config的<configSections />中正确注册,即

<!-- From web.config -->
<section name="navigationMenu" type="MySite.Helpers.NavigationMenuSection, MySite" />

// With the config section class declared like so:
public class NavigationMenuSection : ConfigurationSection
{ }

但是我会再次强调这个工作正常,直到我点击下载链接。为什么内容类型会导致问题?无法真正解决问题......

1 个答案:

答案 0 :(得分:1)

如果您通过自定义方式访问“部分”而不使用.Net配置机制,那么您也可以将类型注册为System.Configuration.IgnoreSection。这样可以更轻松地修改配置对象,而无需镜像配置文件中的更改。您甚至不需要从任何.Net配置对象派生对象。