2017-04-17 14 views
1

Url書き換えルールでAppSettingsキーにアクセスしようとしていますが、アクセス方法がわかりません。誰か助けてくれますか? UrlRewriteルールUrl書き換えルールの特定のappsettingsキーにアクセス

+0

あなたが解決策を見つけるか:XSLはのようなものをlookeでしょうか?私は同じ状況にいる –

答えて

1

でAPIUrlキーにアクセスしようとし

<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> 

私は、AppSettingsは、他の場所であなたの設定ファイルで使用できないと思います。

私はMSBuildの使用してこの問題に対処するには、2つの方法で発見しました:設定ファイルを更新するMSBuild Community Tasks Projectから

  • 使用xmlupdateタスクを。私の仕事はすでにこれを使っていたので、私が取った道だった。あなたの設定ファイルを更新する

    <XmlUpdate 
        XPath="//rule[@name='ProxyApi']/action/@url" 
        XmlFileName="{Your Config File Location}" 
        Value="https://www.x.com/api/{R:1}" /> 
    
  • 使用XslTransformation Task:次のようになります。このソリューションは組み込まれていますが、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> 
    
関連する問題