Definert felt i IIS log har "-" for verdi for visse baner

stemmer
0

Jeg har konfigurert følgende omskrivingsregel i en ASP.NET applikasjon er web.config ligger på IIS:

    <rewrite>
        <rules>
            <rule name=setappname>
                <match url=.* />
                <serverVariables>
                    <set name=CONTAINER_APP_NAME value=desiredValue />
                </serverVariables>
            </rule>
        </rules>
    </rewrite>

Og i applicationHost.config, jeg har følgende utdrag:

    <sites>
        <site name=mysite id=1 serverAutoStart=true>
            <application path=/ applicationPool=.NET v4.5>
                <virtualDirectory path=/ physicalPath=c:\mysite />
            </application>
            <bindings>
                <binding protocol=http bindingInformation=*:80: />
            </bindings>
            <logFile directory=c:\iislog period=MaxSize truncateSize=4294967295>
                <customFields>
                    <add logFieldName=x-forwarded-for sourceName=X-Forwarded-For sourceType=RequestHeader />
                    <add logFieldName=container-app sourceName=CONTAINER_APP_NAME sourceType=ServerVariable />
                </customFields>
            </logFile>
            <applicationDefaults preloadEnabled=true />
        </site>
    </sites>

OG

<system.webServer>
    <rewrite>
        <allowedServerVariables>
            <add name=CONTAINER_APP_NAME />
        </allowedServerVariables>
    </rewrite>
</system.webServer>

Dette fungerer fint (jeg ser de 2 egendefinerte felt i loggene), unntatt når banen slutter med / (for eksempel: /eller /APath/). I slike tilfeller verdien av container-appfeltet (ved hjelp av Server Variabel) er alltid -. For eksempel:

$ curl --silent --output /dev/null -H X-Forwarded-For:10.3.2.12 http://localhost/APath/

rentene:

2019-12-02 20:47:32 172.29.152.165 GET /APath/ - 80 - 192.168.7.4 curl/7.67.0 - 200 0 0 121 10.3.2.12,+::1 -

betraktninger:

$ curl --silent --output /dev/null -H X-Forwarded-For:10.3.2.12 http://localhost/home.aspx

rentene:

2019-12-02 20:50:17 172.29.152.165 GET /home.aspx - 80 - 192.168.7.4 curl/7.67.0 - 200 0 0 63 10.3.2.12,+::1 desiredValue

Jeg selv aktivert Kunne Request Følge å se om kanskje omskrivingsregel ikke er plukke opp disse banene, men jeg kan bekrefte at regelen samsvarer med banen og serveren variabelen er satt til ønsket verdi.

Jeg lurer på om det er noe annet jeg kan prøve å feilsøke dette. Hvorfor slike baner ikke er logget på riktig måte?

Publisert på 02/12/2019 klokken 23:58
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Jeg tror jeg fant problemet og legge den her for andre.

Ved å se på forespørsel mislyktes spor, kan jeg se at IIS skaper barnets forespørsler om kataloger standarddokumenter (URI slutter med '/'). Angivelig, ved design, omskrivingsregler gjelder ikke for barn forespørsler (f.eks: https://forums.iis.net/t/1152699.aspx ).

For å løse dette, jeg laget en omskrivingsregel å endre slike forespørsler om å være eksplisitt forespørsler til dokumenter slik at den andre omskrivingsregel blir anvendt på hovedprosessnivå:

       <rewrite>
            <rules>
                <rule name="setExplictDoc">
                    <match url="(.*(APath)/$)" />
                    <action type="Rewrite" url="{R:0}Default.aspx" />
                </rule>
                <rule name="setappname">
                    <match url=".*" />
                    <serverVariables>
                        <set name="CONTAINER_APP_NAME" value="desiredValue" />
                    </serverVariables>
                </rule>
            </rules>
        </rewrite>

Ideen kom fra https://support.microsoft.com/en-ca/help/3050055/iis-digest-authentication-does-not-permit-pass-though-authentication-f

Svarte 03/12/2019 kl. 01:16
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more