我将项目升级到ASPNET5。关于升级我的web.config文件,我遇到了麻烦。
我尝试使用Microsoft.Framework.ConfigurationModel.Xml
包来读取URL重写配置。配置如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="MainRule" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" matchType="Pattern" pattern="api/(.*)" negate="true" />
<add input="{REQUEST_URI}" matchType="Pattern" pattern="signalr/(.*)" negate="true" />
</conditions>
<action type="Rewrite" url="default.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
但当我尝试将其转换为aspnet5使用的对象时,我遇到了重复的关键问题。
将现有web.config移植到新的aspnet模型的最佳方法是什么?这是我意识到的一个小案例,但在现实世界中,这些配置非常激烈。
我已经创建了一个example project,我希望与其他人分享,当我得到其中一些案例时。
答案 0 :(得分:0)
您发布的web.config文件只有iis的url重写规则。你真的需要从你的应用程序访问那些? IIS将直接从web.config中读取这些内容,但您不应该在应用程序中使用这些内容,因此您根本不需要尝试使用Microsoft.Framework.Configuration中的新类来解析该文件。
如果您的应用需要其他一些设置,那么您也可以使用json.config文件,如许多示例所示,用于您自己的应用程序设置。
你仍然可以将该web.config文件放入应用程序根目录,并假设你的应用程序在IIS中托管,它应该仍然可以完成它的工作,并告诉IIS做一些URL重写。您不应该将它重命名为config.xml,因为它似乎已经完成了,因为IIS不会注意到该文件,除非它被命名为web.config
为什么你需要从应用程序代码中访问这些url重写规则,因为它是IIS而不是重写URL的应用程序代码?
我认为新的范例是在azure中使用json.config和/或环境变量进行应用程序配置
你唯一可能仍然使用web.config文件的是IIS配置,但它与应用程序配置是分开的,这是你唯一可以使用web.config文件继续进行的,你不需要访问web来自应用程序代码的.config文件。