2017-04-17 3 views
1

J'essaie d'accéder à AppSettings Entrez les règles de réécriture d'URL et je ne sais pas comment y accéder. Quelqu'un peut m'aider?Accéder à la clé des paramètres d'applications spécifiques dans les règles de réécriture d'URL

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

Essayer d'accéder à la clé de APIUrl dans la Règle UrlRewrite

+0

Avez-vous trouvé une solution? Je suis sur la même situation –

Répondre

1

Je pense que appsettings ne sont pas disponibles ailleurs dans vos fichiers de configuration.

J'ai trouvé deux façons de résoudre ce problème en utilisant msbuild:

  • Utilisez la tâche xmlupdate de MSBuild Community Tasks Project pour mettre à jour les fichiers de configuration. Mon travail utilisait déjà ça, donc c'était le chemin que j'ai pris. Ressembleraient:

    <XmlUpdate 
        XPath="//rule[@name='ProxyApi']/action/@url" 
        XmlFileName="{Your Config File Location}" 
        Value="https://www.x.com/api/{R:1}" /> 
    
  • Utilisez XslTransformation Task pour mettre à jour vos fichiers de configuration. Cette solution est intégrée mais nécessite plus de connaissances sur XSL. Le Xsl serait looké quelque chose comme:

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