URL /%20 /与外部connectionStrings或appSettings文件一起引发配置文件错误

时间:2019-07-16 03:02:39

标签: asp.net-mvc-4 iis-10

一些笔测试人员测试了ASP.NET MVC4网站,他们发现我的URL:/%20 /例如显示“原始”错误。 https://example.com/%20/

Server Error in '/' Application.
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 

Parser Error Message: The configSource file 'Web_ConnectionStrings.config' is also used in a parent, this is not allowed. 

Source Error: 


Line 17:    <!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
Line 18:    <!-- these settings can be found in external files - this prevents application restart when they are changed -->
Line 19:    <connectionStrings configSource="Web_ConnectionStrings.config" />
Line 20:    <appSettings configSource="Web_AppSettings.config" />
Line 21:    <!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->

尽管应该,但这不是正常的404错误,我已经捕获了这些错误并显示了自定义页面。我也抓住了500,并很好地显示了它们。此错误发生在 global.asax.cs 中的 Application_Error()之前,因此没有被捕获。

这似乎是由IIS或应用程序引起的斜杠-空格-斜杠引起的,并且它试图多次加载web.config的包含文件。

如果我以常规方式包括这些部分(不是外部文件,而是web.config中的常规XML部分),那么一切都会按预期进行,并显示自定义404页面。

如果您删除了%20并只做了两个斜杠,则一切正常。似乎必须是这个特定的URL。

我还看过其他有关IIS配置的文章,其中带有默认站点或指向相同文件位置的虚拟路径。但是我认为这不适用,因为我已停止了默认站点,并且在其他任何URL上都看不到任何问题-该站点似乎运行正常。

有人知道IIS试图使用/%20 / URL吗?还是如何更优雅地处理呢?

我喜欢拆分这些配置部分,以使更改不会回收应用程序池,但是如果这样做有问题(为什么允许外部文件?),我想我会将所有设置都放入web.config本身。

0 个答案:

没有答案