36

IIS Express を最初にセットアップして SSL を有効にすると、デフォルトでポートが 44300 に設定されます。残念ながら、サイトにアクセスしようとするとhttps://localhost/、ポート番号 44300 を使用しないと機能しませんhttps://localhost:44300/

リンクは、次を使用して生成されます。

<%= Html.ActionLink("Index", "Index", "Home", new { @action = "https://" + Request.Hostname + Url.Action("Index", "Home") }) %>

見苦しい解決策ですが、@actionキーワードは生成されたルートをオーバーライドできますが、これは、アプリケーションが非標準ポート (44300 など) を認識する必要があるように見えることを意味します。

問題は、開発環境でのみ発生する問題を解決するために何かを書いていることです。

私の質問は...どうすればポートを 443 に変更し、IIS Express を好きなようにできますか?

私のサイトの設定は以下のとおりです。

<site name="MySite" id="2" serverAutoStart="true">
  <application path="/">
    <virtualDirectory path="/" physicalPath="C:\Inetpub\MySite" />
  </application>
  <bindings>
    <binding protocol="http" bindingInformation=":80:" />
    <binding protocol="https" bindingInformation=":44300:" />
  </bindings>
</site>

よろしくお願いします。

アップデート:

この質問は、IIS フォーラムで Divya によって回答されています。

4

5 に答える 5

28

この質問は、IIS フォーラムで Divya によって回答されています。

WebMatrix で Web サイトの SSL を有効にすると、デフォルトでポート 44300 になり、すべてのバインディングがバックグラウンドで実行されます。構成ファイルでこのポートを 443 に変更しようとしたことを願っています。それが完了して保存されたら、http.sys のバインドも変更する必要があります。ポート 44300 の既存のエントリを削除し、ポート 443 のエントリを追加する必要があります。これを行うには、httpcfg (WinXp/Win2003) または 'netsh http' (WinVista/Win2K8/Win7) を使用できます。netsh のコマンドは次のとおりです。

1) 44300 の既存のエントリの appid と certhash を取得します (WebMatrix がデフォルトでインストールするのと同じ証明書を使用すると仮定します。証明書も変更する場合は、証明書の証明書ハッシュを証明書ストア): netsh http show sslcert. 出力で、ポート 44300 のエントリを検索し、certhash と appID をコピーします。

2) 44300 のエントリを削除します。netsh http delete sslcert ipport=0.0.0.0:44300

3) 手順 1 でコピーした certhash と appID を使用して、ポート 443 の新しいエントリを追加します。netsh http add sslcert ipport=0.0.0.0:443 certhash=<certhash> appid=<appid>

http.sys でエントリを構成したら、変更を有効にするために http サービスを再起動する必要があります。

net stop http

net start http

他の人が指摘したように、SSL 証明書を取得するにはいくつかの良い方法があります。

netsh http show sslcert > output.txt

または(私の好みの方法):

netsh http show sslcert | clip
于 2010-09-15T14:21:47.807 に答える
4

私はこのトピックに多くの時間を費やしてきたので、私の発見を共有したいと思います. 他の投稿からコードを除いたセグメントを再投稿しています。背景と説明:

==========================================

いろいろ調べた結果、IIS Express と Controller クラスのOnAuthorizationメソッドをオーバーライドすることで、この問題を解決することができました (Ref#1)。また、Hanselman が推奨するルート (Ref#2) も使用しました。ただし、次の 2 つの理由から、これら 2 つのソリューションには完全には満足できませんでした。

  1. Ref#1OnAuthorizationはコントローラー クラス レベルではなく、アクション レベルでのみ機能します。
  2. Ref#2 には多くのセットアップ (Win7 SDK for makecert)、netshコマンド、およびポート 80 とポート 443 を使用するために管理者として VS2010 を起動する必要がありますが、これには眉をひそめます。

そのため、次の条件で非常に単純化されたこのソリューションを思いつきました。

  1. RequireHttpsController クラスまたはアクション レベルで属性を使用できるようにしたい

  2. 属性が存在する場合は MVC で HTTPS を使用し、RequireHttps存在しない場合は HTTP を使用します。

  3. 管理者として Visual Studio を実行する必要はありません

  4. IIS Express によって割り当てられた任意の HTTP および HTTPS ポートを使用できるようにしたい

  5. IIS Express の自己署名 SSL 証明書を再利用でき、無効な SSL プロンプトが表示されても気にしません。

=========================================

ここで私のソリューション/コードを見つけることができます ==> ASP.NET MVC RequireHttps in Production Only

于 2012-08-28T19:58:09.940 に答える
3

ポート 44300 は連続しています。00 は、SSL 対応として構成した最初のアプリケーションであることを意味します。01 は 2 番目などになります。

また、global 属性を追加して Web サイトを HTTPS でのみ動作させる必要があるため、[RequireHttps]デバッグに問題がありました。起動すると、自動的にリダイレクトされましたhttps://localhost/

Web サイトをデバッグするときにこの問題を解決RequireHttpsAttributeするには、ポートを指定する新しいものを作成するだけです

#if DEBUG
public class RequireHttpsAttribute : System.Web.Mvc.RequireHttpsAttribute
{
    protected override void HandleNonHttpsRequest(System.Web.Mvc.AuthorizationContext filterContext)
    {
        base.HandleNonHttpsRequest(filterContext);

        var result = (RedirectResult)filterContext.Result;

        var uri = new UriBuilder(result.Url);
        uri.Port = 44301;

        filterContext.Result = new RedirectResult(uri.ToString());
    }
}
#endif

このクラスは、デバッグ時にのみ使用してください。IIS7 にデプロイする場合は、URL 書き換えを使用して HTTPS にリダイレクトする必要があります。

于 2012-08-03T17:53:18.977 に答える
0

ダンの答えは正しいですが、標準ポートで http と https を使用して Web サイトを提供するように IIS Express を構成する際にまだ問題がある場合は、手順を追って説明する素晴らしいチュートリアルをご覧ください。

http://www.lansweeper.com/kb/54/How-to-configure-SSL-in-IIS-Express.html

私の場合、誤って IIS Express 証明書を削除してしまいました。Visual Studioで初めてSSLを使用したときに生成されると思います(選択したプロジェクトでF4を押してプロパティウィンドウを取得し、「SSSを有効にする」チェックボックスをオンにします)。このチュートリアルでは、証明書を作成して修正する方法を説明しました。

于 2015-03-18T12:51:59.710 に答える