MVC 中文件下载的自定义配置部分错误
Custom config section error on file download in MVC
我在 web.config 的 ASP.NET MVC 5 项目中使用自定义配置部分。它工作得很好,直到我尝试通过 link:
下载文件
<a href="@Url.Action("Download", new { id = Model.Id })">...
以下是我在控制器中处理下载的方式:
return new FileStreamResult(myStream, "application/octet-stream")
{
FileDownloadName = "MyFile.someExt"
}
我会重申我的自定义配置工作正常,除非我单击上面提到的下载 link。然后我得到一个错误:
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
{ }
但我会再次强调,在我单击下载 link 之前,它工作正常。为什么内容类型会导致问题?无法真正解决这个问题...
如果您通过自定义方式访问您的 "section" 而不是使用 .Net 配置机制,您不妨将类型注册为 System.Configuration.IgnoreSection。这将使修改配置对象变得更容易,而无需镜像配置文件中的更改。您甚至不需要从任何 .Net 配置对象派生对象。
我在 web.config 的 ASP.NET MVC 5 项目中使用自定义配置部分。它工作得很好,直到我尝试通过 link:
下载文件<a href="@Url.Action("Download", new { id = Model.Id })">...
以下是我在控制器中处理下载的方式:
return new FileStreamResult(myStream, "application/octet-stream")
{
FileDownloadName = "MyFile.someExt"
}
我会重申我的自定义配置工作正常,除非我单击上面提到的下载 link。然后我得到一个错误:
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
{ }
但我会再次强调,在我单击下载 link 之前,它工作正常。为什么内容类型会导致问题?无法真正解决这个问题...
如果您通过自定义方式访问您的 "section" 而不是使用 .Net 配置机制,您不妨将类型注册为 System.Configuration.IgnoreSection。这将使修改配置对象变得更容易,而无需镜像配置文件中的更改。您甚至不需要从任何 .Net 配置对象派生对象。