web-dev-qa-db-ja.com

Visual Studio 2015-仮想ディレクトリを追加できない

一部のサイトはVisual StudioのWebサイトプロジェクトとして実行しています。最近、VS2015にアップグレードしました。これで、新しいWebサイトに仮想ディレクトリを追加できなくなりました。

エラーメッセージが表示される[Add new virtual direcory]を右クリックして、Projectフォルダーのapplicationhost.configを編集してみました。

これはVS2015のバグですか、それともディレクトリを作成する方法はありますか? VS2015にアップグレードする前に、IIS Expressで既に実行されているプロジェクトには問題はありません。

PS:私はスレッド here を知っていますが、助けにはなりません。

9
Dominik G

FileSystem WebサイトをIIS Expressに。

  1. VS2015を開きます(右クリックして管理者として実行を選択します)。
  2. 「ファイル」>「新規」>「Webサイト...」をクリックします。
  3. [新しいWebサイト]ダイアログで参照...ボタンをクリックします。
  4. 左側のペインでLocal IISを選択します。右側のペインでIIS Express Sitesを選択します。
  5. 上部右側には4つのボタンがあります。 Create New Siteボタンをクリックします。
  6. 名前を付けて開くをクリックします。これにより、Webの場所でHTTPが選択されます。
  7. OKをクリックします。
  8. 次に、ソリューションを閉じます。
  9. Users \\ Documents\IISExpress\configフォルダからapplicationhost.configを開きます。メモ帳で開くことができます。
  10. sitesセクションでWebサイトを見つけます。そして物理パスを変更します(virtualDirectory path = "/" physicalPath = "C:\ WebApp\WebSite1")。既存のWebプロジェクトのパスを記述します。
  11. Applicationhost.configファイルを保存して閉じます。
  12. VS2015を実行します(管理者として実行)。
  13. [ファイル]> [開く]> [Webサイト...]をクリックします。
  14. [Webサイトを開く]ダイアログで、左側のペインから[ローカルIIS)]を選択します。
  15. IIS Express Sitesでサイトを選択し、Openをクリックします。
  16. Webサイトメニューおよび新しい仮想ディレクトリ...をクリックします。
  17. エイリアス名とフォルダパスを指定し、[OK]をクリックします。

これで、エラーなしで作成できます。

7
Ritesh Patel

上記の答えはどちらもうまくいきませんでしたが、なぜこれが機能するのかはまだわかりませんが、ここに私がやったことがあります:

プロジェクトにあるApplicationhost.configファイルを変更します。

元々は次のように見えました:

<site name="Website" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
    </application>

    <bindings>
        <binding protocol="http" bindingInformation="*:51005:localhost" />
    </bindings>
</site>

別のアプリケーションパスエントリを追加する必要がありました。

<application path="/mywebsite" applicationPool="Clr4IntegratedAppPool">
    <virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
</application>

したがって、次のようになります。

<site name="Website" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
    </application>

    <application path="/mywebsite" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\...\MyWebsite" />
    </application>

    <bindings>
        <binding protocol="http" bindingInformation="*:51005:localhost" />
    </bindings>
</site>
7
WhizBang

ソリューションファイル ".sln"がある場合は、次の手順に従います。

  1. メモ帳を使用してソリューションファイルを開きます。

  2. Project( "{で始まる行を検索します

例えば:

Project( "{E24C65DC-7377-472B-9ABA-BC803B73C61A}")= "WebProject1"、 "WebProject1"、......

次に、次のように変更します。

Project( "{E24C65DC-7377-472B-9ABA-BC803B73C61A}")= "WebProject1"、 "http:// localhost:12345/WebProject1 "、......

新しいプロパティを追加します

SlnRelativePath = "C:\ WebProject1 \"

ProjectSection(WebsiteProperties)

例では、ProjectSectionから

Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "WebProject1", "{6D411253-734E-401A-A049-9620FC55D4FB}"
    ProjectSection(WebsiteProperties) = preProject
        UseIISExpress = "true"
        TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
        Debug.AspNetCompiler.VirtualPath = "/WebProject1"
        Debug.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
        Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
        Debug.AspNetCompiler.Updateable = "true"
        Debug.AspNetCompiler.ForceOverwrite = "true"
        Debug.AspNetCompiler.FixedNames = "false"
        Debug.AspNetCompiler.Debug = "True"
        Release.AspNetCompiler.VirtualPath = "/WebProject1"
        Release.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
        Release.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
        Release.AspNetCompiler.Updateable = "true"
        Release.AspNetCompiler.ForceOverwrite = "true"
        Release.AspNetCompiler.FixedNames = "false"
        Release.AspNetCompiler.Debug = "False"
    EndProjectSection
EndProject

最終的にこれになる:

Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebProject1", "http://localhost:12345/WebProject1", "{6D411253-734E-401A-A049-9620FC55D4FB}"
    ProjectSection(WebsiteProperties) = preProject
        UseIISExpress = "true"
        TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
        Debug.AspNetCompiler.VirtualPath = "/WebProject1"
        Debug.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
        Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
        Debug.AspNetCompiler.Updateable = "true"
        Debug.AspNetCompiler.ForceOverwrite = "true"
        Debug.AspNetCompiler.FixedNames = "false"
        Debug.AspNetCompiler.Debug = "True"
        Release.AspNetCompiler.VirtualPath = "/WebProject1"
        Release.AspNetCompiler.PhysicalPath = "C:\WebProject1\"
        Release.AspNetCompiler.TargetPath = "PrecompiledWeb\WebProject1\"
        Release.AspNetCompiler.Updateable = "true"
        Release.AspNetCompiler.ForceOverwrite = "true"
        Release.AspNetCompiler.FixedNames = "false"
        Release.AspNetCompiler.Debug = "False"
        SlnRelativePath = "C:\WebProject1\"
    EndProjectSection
EndProject
2
terenf

WhizBangの答えに似ています...

ルートプロジェクトフォルダー内のファイルを削除します(必要に応じてバックアップします)

.vs\config\applicationhost.config 

プロジェクトファイルのIISUrlタグを空にします(存在する場合)。

<IISUrl></IISUrl>

プロジェクトのプロパティに移動し、仮想URLをもう一度作成してみてください。

0
Jeremy A. West