2017-04-11 10 views
1

web.configでURL書き換えコードを追加してから、それをazureに公開しました。 httpでウェブサイトにアクセスしようとしても自動的にhttpsにリダイレクトされます。このサイトは安全な接続を提供できません

<rewrite> 
    <rules> 
    <rule name="Redirect to https"> 
     <match url="(.*)"/> 
     <conditions> 
     <add input="{HTTPS}" pattern="Off"/> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/> 
    </rule> 
    </rules> 
</rewrite> 

ローカルマシンで同じコードを実行すると、以下のエラーが発生します。

このサイトでは、安全な接続に

enter image description here

を提供することはできませんあなたは私のローカルマシンに上記のコードを実行すると、上記のエラーを解決する方法を教えてくださいことはできますか?

Pradeep

+0

これを試すhttps://dotnetcodr.com/2015/09/18/how-to-enable-ssl-for-a-net-project-in-visual-studio/ –

答えて

2

何。

問題は、あなたがhttp://localhost:1234からhttps://localhost:1234にリダイレクトする場合、それは単に動作しませんので、IIS Expressはhttps://localhost:44300のようなものでHTTPSを公開しているので、IIS Expressは、異なるポートでHTTPとHTTPSを公開するということです。

IIS ExpressでSSL/TLSを有効にすることはできますが、そうする必要がありますが、書き換えルールはリリースモードのままにしておきます。私もここにHSTSを追加

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.web> 
    <compilation xdt:Transform="RemoveAttributes(debug)" /> 
    </system.web> 
    <system.webServer> 
    <rewrite xdt:Transform="Insert"> 
     <rules> 
     <!-- Redirects users to HTTPS if they try to access with HTTP --> 
     <rule 
      name="Force HTTPS" 
      stopProcessing="true"> 
      <match url="(.*)"/> 
      <conditions> 
      <add input="{HTTPS}" pattern="^OFF$" ignoreCase="true"/> 
      </conditions> 
      <action 
      type="Redirect" 
      url="https://{HTTP_HOST}/{R:1}" 
      redirectType="Permanent"/> 
     </rule> 
     </rules> 
     <outboundRules> 
     <!-- Enforces HTTPS for browsers with HSTS --> 
     <!-- As per official spec only sent when users access with HTTPS --> 
     <rule 
      xdt:Transform="Insert" 
      name="Add Strict-Transport-Security when HTTPS" 
      enabled="true"> 
      <match serverVariable="RESPONSE_Strict_Transport_Security" 
       pattern=".*" /> 
      <conditions> 
      <add input="{HTTPS}" pattern="on" ignoreCase="true" /> 
      </conditions> 
      <action type="Rewrite" value="max-age=31536000" /> 
     </rule> 
     </outboundRules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

注:ここでは

は例Web.Release.configファイルです。リリースモードで<rewrite>要素をWeb.configに挿入します。 <system.webServer>要素は既にWeb.configに存在します。それ以外の場合は、それを挿入します。

+0

Juunasありがとうございます。上記のコードはこの行に何らかのエラーを表示します。なぜなら、rewrite要素はtransform属性を許可しないからです。 – pradeep

+0

私にも同様の警告が表示されますが、それでも動作します。なぜそれがそれを行うか分からない。どの要素を置いても問題ありません.XML変換システムは気にしません。 – juunas

+0

うまく動作しますが、私はWeb.Dev.configとWeb.Prod.configの2つの設定ファイルを作成しました。 Web.Prod.configファイルで書き換えコードを追加してから、それをazureに公開して正常に動作します。しかし、Web.Dev.configファイルを使って自分のアプリケーションをAzureに公開しても、Web.Dev.configファイルに書き換えコードを追加しなくても、httpsにリダイレクトされます。 – pradeep

0

HTTPSで使用するようにVisual Studio Serverを構成する必要があります。 詳細については、このリンクを経由してください:私は個人的にはそれがローカルで作業を取得するために少し厄介であるからこそWeb.Release.configにその書き換えの設定を入れてください
HTTPS with Visual Studio's built-in ASP.NET Development Server

+0

IIS ExpressではHTTPSを使用できますが、それは別のポートにあります。これはまだ問題を完全には解決しません。リダイレクトは同じポートで発生するため、接続できません。 – juunas

+0

まだSSLのプロパティを有効にしても同じエラーが発生しています。 – pradeep

関連する問題