将Web.Config移植到ASPNET5

时间:2015-07-02 14:33:12

标签: asp.net web-config asp.net-core

我将项目升级到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使用的对象时,我遇到了重复的关键问题。

enter image description here

将现有web.config移植到新的aspnet模型的最佳方法是什么?这是我意识到的一个小案例,但在现实世界中,这些配置非常激烈。

我已经创建了一个example project,我希望与其他人分享,当我得到其中一些案例时。

1 个答案:

答案 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文件。