我正在尝试访问Url Rewrite规则中的AppSettings Key,我不知道如何访问它们。任何人都可以帮助我吗?
<appSettings>
<add key="APIUrl" value="https://www.x.com/api/{R:1}" />
</appSettings>
<system.webServer>
<rewrite>
<rules>
<rule name="ProxyApi" stopProcessing="true">
<match url="^api/?(.*)" />
<serverVariables>
<set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
<set name="HTTP_X_ORIGINAL_HOST" value="{HTTP_HOST}" />
</serverVariables>
<action type="Rewrite" url="{APIUrl}" />
</rule>
</rules>
</rewrite>
</system.webServer>
尝试访问UrlRewrite规则中的APIUrl键
答案 0 :(得分:1)
我认为appsettings在配置文件的其他地方不可用。
我找到了两种使用msbuild解决此问题的方法:
使用xmlupdate中的MSBuild Community Tasks Project任务更新配置文件。我的工作已经使用了,所以这是我走的路。看起来像:
<XmlUpdate
XPath="//rule[@name='ProxyApi']/action/@url"
XmlFileName="{Your Config File Location}"
Value="https://www.x.com/api/{R:1}" />
使用XslTransformation Task更新配置文件。此解决方案内置但需要更多XSL知识。 Xsl会像下面这样:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//rule[@name='ProxyApi']/action/@url">
<xsl:attribute name="url">
<xsl:value-of select="'https://www.x.com/api/{R:1}'"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>