【问题标题】:Porting a Web.Config to ASPNET5将 Web.Config 移植到 ASPNET5
【发布时间】:2015-07-02 14:33:11
【问题描述】:

我将我的项目升级到 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,希望在弄清楚其中一些案例后与其他人分享。

【问题讨论】:

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


    【解决方案1】:

    您发布的 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 重写?

    我认为新范例是使用 json.config 和/或 azure 中的环境变量进行应用程序配置

    您可能仍然使用 web.config 文件的唯一事情是 IIS 配置,但这与应用程序配置是分开的,这是您将使用 web.config 文件进行下一步的唯一事情,您不需要访问 web .config 文件来自应用程序代码。

    【讨论】:

    • 感谢您的帖子,但 URL 重写只是一个简单的示例,并不是问题所在。我与团队聊天,如果 Web.config 存在,仍然会被读取。
    • 我认为乔指出了一个正确的问题。 web.config 仍将(仅)在 IIS 中使用,并且仍将按原样工作。应用程序代码不需要此服务器端配置。如果您的应用程序需要任何其他配置,您可以将其迁移到使用 project.json 或 ini 或 xml 而不是 web.config。如果您在 linux 服务器上使用 .htaccess,也会发生同样的情况。
    猜你喜欢
    • 1970-01-01
    • 2016-07-13
    • 2011-03-06
    • 2017-06-09
    • 2015-02-24
    • 1970-01-01
    • 2011-09-13
    • 2019-11-19
    • 1970-01-01
    相关资源
    最近更新 更多