web-dev-qa-db-ja.com

IIS VS2012およびチームでのエクスプレスSSLの使用に問題がある

問題:

ADFS2では、RPトラストがhttpsを使用する必要があります。 RPの信頼はhttps://localhost:44310/PAWS/。そうは言っても、IIS ExpressでSSLをローカルで使用する必要があります。したがって、ASP.NET MVC4使用するプロジェクトIIS Express。 mvc4 project configuration

これをTFS(ソース管理)にチェックインすると、チームの別の開発者が最新の状態になります。プロジェクトはそれらのためにロードされません。

MVC4 project wont load

Visual Studio 2012は、ソリューションを開くときに次のエラーメッセージを表示します。 VS2012 error 1VS2012 error 2

これは、IIS Expressがプロジェクトファイルを自動的に読み取り、HTTPSバインディングをサイト構成に追加しないためです。これはVSがIIS Express 'に追加する構成です。 applicationhost.configファイル

<site name="PAWS.Web-Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\larsene\Documents\My Web Sites\PAWS.Web-Site14" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:44310:localhost" />
    </bindings>
</site>

しかし、次のようにバインディングプロトコルをHTTPSに設定する必要があります。

<binding protocol="https" bindingInformation="*:44310:localhost" />

これを手動でapplicationhost.configに入力することもできます。または、 appcmd.exe のように実行して構成することもできます。

"%ProgramFiles(x86)%\IIS Express\appcmd.exe" set site /site.name:PAWS.Web-Site /bindings:https/*:44310:localhost

しかし、これら2つの方法のどちらも私が望むものではありません。このプロジェクトに取り組んでいるすべての開発者に、プロジェクトをロードする前にIIS Express設定を手動で編集する必要があることを説明する必要はありません。

問題を再現する方法:

これは、最初にVS2012を閉じることで簡単に再作成できます。次に、IIS Expressの構成フォルダーを削除します。

%USERPROFILE%\Documents\IISExpress

次に、VS2012を開き、IIS Express with httpsを使用するように構成されたMVC4プロジェクトのソリューションを開きます。これで、VS2012はプロジェクトの読み込みに失敗し、安全なバインドがないことについて文句を言います。

私は何が間違っているのですか、または私のプロジェクトを最新の状態にした人がそれを実行できるようにこれを修正するにはどうすればよいですか?

20
Evan Larsen

Visual Studio2013にはこの問題がないことを確認できます。

VS2012から2013にアップグレードすると、問題が解決しました。

3
zuraff

私は最近、これと同じ問題に遭遇し、なぜそれが起こっているのかを判断することができました。

Visual Studioは、ProjectUrl設定を使用してIIS Express httpバインディングを設定し、IISExpressSSLPort設定を調べてhttpsバインディングを設定します。

ただし、プロジェクトのURLをhttpsアドレスに変更した場合は、VisualStudioが混乱します。 IIS Expressバインディングの更新の目的で、プロジェクトURLのhttpアドレスを入力し、そこにあるhttpsアドレスを処理できないように見えることを前提としています。

プロジェクトのURLをhttpsアドレスに変更することが、VisualStudioにデフォルトでhttpsのURLのデバッグを開始させる唯一の方法であるため、これは事態を複雑にします。

したがって、これはVisualStudioがIIS Expressバインディングの更新を処理する方法に問題があるようです。自動バインディングの更新とデバッグの開始の両方を可能にする適切な回避策を認識していません。ロードされたhttpsアドレス。

10
Brandon Ording

これはVS2012のバグのようです...これを処理できる唯一の方法は、C:\ Users\YOUR_USER_NAME\Documents\IISExpress \の下にあるIISExpress構成ファイルapplicationhost.configを手動で編集することです。構成。次に、「サイト」の下で、特定のアプリケーションのWebサイトのブロックを変更しました。

    <site name="YourSite" id="1">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="c:\..." />
            </application>
            <bindings>
                <binding protocol="https" bindingInformation="*:YOUR_PORT_#:localhost" />
            </bindings>
    </site>

'バインディングプロトコル'を 'https'に変更し、少なくともサイトがIIS Expressで作成/変更されるまで、管理者権限でVisual Studio2012を起動するようにしてください。

お役に立てれば...

3
jpv

まず、ローカルマシンでこれを再現する手順を提供していただきありがとうございます。他のチームメンバーもこの問題を抱えていましたが、私がプロジェクトを作成したので、私はそれを経験しませんでした。これにより、いくつかの異なるソリューションを試す機会が得られました。

現在の環境(MSからの修正なし)で最適に機能することがわかったのは、プロジェクトのURLをhttp値のままにして、開始URLをhttps値に変更することです。ほとんどの開発者は、VSでそれを変更することに慣れているはずです。

これは、httpsサイトを構成するために誰かがbatファイルを実行する必要なしに新しいマシンで機能します。 IIS Express(httpおよびhttps))には2つのバインディングがありますが、それ以外は十分に機能しているようです。

1
BlakeH

そのバインディングを自動的に表示するには、プロジェクトのプロパティリストで SSL EnabledをTrueに設定 する必要があります。 (スコット・ハンゼルマンによる)

As seen in Visual Studio 2010

1
Kevin Stricker

管理者としてプロジェクトを開こうとしましたか(管理者としてVS2012を実行します)?

通常、上記のエラー(ASP.NET4.5用のWebxxxの構成に失敗しました...)および(仮想ディレクトリxxxの作成に失敗しました)が発生したのは、VisualStudioに十分な特権がないためです。

あなたの問題ではないかもしれませんが、試してみても害はありません。

1
Yag

.csprojファイルでポートを手動で構成しようとしましたか?そこで構成すると、他のワークステーションに引き継がれるはずです。

<IISExpressSSLPort>44310</IISExpressSSLPort>

また、[すべてのユーザーにサーバー設定を適用する]オプションをオンにしても、プロジェクトのユーザーファイルで問題が発生する可能性があります。 IIS ExpressでSSLの問題を修正するときは、通常、ユーザーファイルを削除するだけです。問題を修正した後でユーザー設定を再構成する方がはるかに簡単だからです。

0
Doug McClean

最近、VS2019とIIS Epressで非常によく似た問題が発生しました。ADFSを使用できるようにhttpをhttpsに変更しようとしました。 Ce site est inaccessible localhost n'autorise pas la connexion。

もう少し調査した後、「SSLが必要」プロパティをtrueからfalseに切り替えて、trueに戻そうとしました。これにより、applicationhost.configファイル(。。。vs\ProjectName\config\applicationhost.config)が更新され、httpsプロトコルの新しいポート番号で新しいSSLバインディングが作成されました。そこで、提案された新しいポート(プロジェクトのウェブプロパティ、構成ファイル、ADFS構成)を使用してすべてのリンクを変更すると、機能します。結論として、httpポートが同じサイトのhttpsと同じである必要はありません。

0
Med SOMAI

私は最近非常によく似た問題を抱えており、解決しようとしたときにこの投稿に出くわしました。私が気づいたことの1つは、applicationhost.configファイルでHTTPSバインディングを使用して複数のサイトが設定されている場合、IIS Expressは非常に苦痛を感じるようです。

私の場合、ポート44300への同じSSLバインディングを使用するように2つのサイトを設定しましたが、いずれかのサイトのSSLバインディングの1つでポート番号を変更すると、OPと同様のエラーが発生しました。結局、サイトの1つを削除する必要がありましたが、これは理想的ではありません。

もう少し掘り下げた後、'Require SSL'プロパティを切り替えてtrueからfalseに切り替え、trueに戻しました。これにより、applicationhost.configが更新され、新しいポート番号で新しいSSLバインディングが作成されました。

既存のプロジェクトをコピーしていて、構成が2つのサイト間でポートを共有しようとしていたため、この混乱に陥りました。

0
philreed

2つのオプションがあります。

  • Webタブのサーバー設定をすべてのユーザーに適用(プロジェクトファイルに保存)オプションを有効にして、バインディング構成をプロジェクトファイルに移動します。

    または

  • プロジェクトのユーザーファイルをソース管理に追加します。

    どちらのアプローチでも、ユーザーは最新の情報を入手して問題なく実行できます。

0
Sean O'Brien