2017-12-16 6 views
2

Ich habe URL Rewrite Regel in IIS 10, um alle http-Anfrage zu https auf diese Weise erzwingen und es funktioniert perfekt.URL Rewrite-Regel zu ByPass IP

<rewrite> 
     <rules> 
     <rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions logicalGrouping="MatchAny"> 
      <add input="{SERVER_PORT_SECURE}" pattern="^0$" /> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" /> 
     </rule> 
     </rules> 
    </rewrite> 

Hier kommt der Twist .. Ich bin Hosting einer Clickonce-Anwendung auf demselben Server und wenn Installer versuchen, die Anwendung zum Download dann gibt es Fehler URLDownloadToCacheFile mit HRESULT ‚-2146697202‘ Fehler fehlgeschlagen: Ein Fehler beim Versuch,

zu downloaden, obwohl URL per Browser zugegriffen wird, die in diesem Fehler erwähnt wird.

Wie pro Microsoft-Dokumente Fehlerbeschreibung ist

wenn das Setup URL der Clickonce-Anwendung installiert wird von einem nicht sicheren auf eine sichere Website (oder umgekehrt) umgeleitet wird, wird die Installation fehlschlagen, da die Internet Explorer-Warnung unterbricht es.

** Installer verwenden intern IE die Manifest-Datei

Jetzt, um diese Situation zu bewältigen ich IP gemacht habe mit meiner Website in IIS Bindung so würde ich mit IP auf die Datei zugreifen, aber wenn ich das erreiche Website mit IP dann die obige Regel auch für sie auslösen und Weiterleitungen an HTTPS und Browser geben wieder einen Fehler, weil Hostnamen in SSL-Certs nicht übereinstimmen. Ich möchte diese Umleitungsregel für meine Website umgehen, wenn sie mit IP geblättert hat.

Ich weiß nicht, wie ich die obige Regel ändern kann, indem ich zusätzliche Bedingung habe oder was die neue Regel sein wird, diese HTTPS-Umleitung beim Zugriff über IP zu umgehen.

EDIT: https://dpaste.de/xWJE ist hier voll webconfig mit den vorgeschlagenen fix von @Kul Tgin

+0

Vielen Dank für die Informationen über Clickonce. Das wusste ich nicht. –

Antwort

0

Sie können eine zusätzliche Bedingung hinzufügen, die überprüft, ob Hostnamen wie eine IPv4-Adresse aussieht.

<rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions logicalGrouping="MatchAll"> 
     <!-- Host name does not look like an ipv4 address AND --> 
     <add input="{HTTP_HOST}" pattern="^\d+\.\d+\.\d+\.\d+$" negate="true" /> 
     <!-- server port is not secure --> 
     <add input="{SERVER_PORT_SECURE}" pattern="^0$" /> 
    </conditions> 
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" /> 
</rule> 
+0

Vielen Dank für Ihre Antwort, aber es funktioniert nicht :( –

+0

@ArslanPervaiz 'nicht funktioniert' nicht hilft. Benötigen Sie weitere Informationen. Wenn es, was ist der Fehler, wenn nicht was ist Ihre endgültige' web.config' Könnten Sie teilen? –

+0

Bitte Siehe meine Web-Konfiguration in der aktualisierten Frage.In Bezug auf Fehler, Browser zeigt unsichere Verbindung Fehler und sagt schlechte certs konfiguriert. –