3

数年間 ASP.NET と MVC を使用してきましたが、これまでに見たことがありません...

ちょうど新しいマシンを受け取りました。新しい MVC4 Web プロジェクトを作成しました (インターネット用、ウィザードで)。プロジェクトを「すぐに」使用して、すべてが正しくセットアップおよび構成されていることをテストしています。

組み込みの Web サーバーを使用して Visual Studio (2010) から実行すると、すべて問題ありません。ただし、IIS でアプリをセットアップしたところ、レイアウトがレンダリングされません (デフォルトの生成コードは ~/Views/Shared/_Layout.cshtml のデフォルトの場所にあります) が、Index.cshtml (~/Views/Home/Index. cshtml) コンテンツ。レイアウトからは何もレンダリングされません。html タグ、スタイル、javascript、body タグなどはありません。

基本的な診断を行いました... IIS にサーバー エラーは表示されません。イベント/アプリケーション ログにエラーとして記録されるものはありません。Chrome ネットワーク インスペクタ ツールに何も表示されません (404 や 500 も表示されません)。

何か案は?私は困惑しています... とても、とてもシンプルなものだと感じています。

Index.cshtml (MVC dll が正しく取得されたことを確認するためだけに、下部にあるテスト コードを除いて、デフォルトで生成されたコード):

<h3>We suggest the following:</h3>
<ol class="round">
    <li class="one">
        <h5>Getting Started</h5>
        ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
        enables a clean separation of concerns and that gives you full control over markup
        for enjoyable, agile development. ASP.NET MVC includes many features that enable
        fast, TDD-friendly development for creating sophisticated applications that use
        the latest web standards.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245151">Learn more…&lt;/a>
    </li>

    <li class="two">
        <h5>Add NuGet packages and jump-start your coding</h5>
        NuGet makes it easy to install and update free libraries and tools.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245153">Learn more…&lt;/a>
    </li>

    <li class="three">
        <h5>Find Web Hosting</h5>
        You can easily find a web hosting company that offers the right mix of features
        and price for your applications.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245157">Learn more…&lt;/a>
    </li>
</ol>

@foreach(var i in new int[]{1,2,3,4,5})
{
    <div>Test @i.ToString()</div>
}

Chrome でレンダリング:

<h3>We suggest the following:</h3>
<ol class="round">
    <li class="one">
        <h5>Getting Started</h5>
        ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
        enables a clean separation of concerns and that gives you full control over markup
        for enjoyable, agile development. ASP.NET MVC includes many features that enable
        fast, TDD-friendly development for creating sophisticated applications that use
        the latest web standards.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245151">Learn more…&lt;/a>
    </li>

    <li class="two">
        <h5>Add NuGet packages and jump-start your coding</h5>
        NuGet makes it easy to install and update free libraries and tools.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245153">Learn more…&lt;/a>
    </li>

    <li class="three">
        <h5>Find Web Hosting</h5>
        You can easily find a web hosting company that offers the right mix of features
        and price for your applications.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245157">Learn more…&lt;/a>
    </li>
</ol>

    <div>Test 1</div>
    <div>Test 2</div>
    <div>Test 3</div>
    <div>Test 4</div>
    <div>Test 5</div>
4

3 に答える 3

6

それで、これが最終的な解決策です(恥ずかしそうに頭を下げます):

まず、IIS を開き、Web サイトをクリックし、IIS グループの下の認証設定を開き、匿名認証をクリックして、右側の [アクション] パネルで [編集] をクリックします。ここで、匿名認証がどのように実行されているかに注意してください。これは、特定のユーザーまたはアプリ プール ディレクトリである可能性があります。

いずれにせよ、サイトを提供しているディレクトリのセキュリティ ダイアログで、このアカウントに適切な権限があることを確認する必要があります。私の場合 (そして、これは真新しいボックスだったのでデフォルトのケースだと思います)、特定のユーザー: IUSR に設定されます。前述のように、そのユーザーにファイルを読み取り/実行するための適切な権限を付与すると、準備が整います。

これについて私が気づいたのは、css や画像などの静的ファイルをサイトにロードしようとしていて、これらのファイルにログインするために 404 またはリダイレクトを取得していたことです (アカウントと権限に関していくつかの異なる解決策を試していました)。

参考文献:

于 2013-02-28T20:57:17.900 に答える
1

その他の考えられる問題は次のとおりです。

  1. _layout.cshtml ファイルのビルド アクションが正しくありません (webdeploy パッケージに含まれるように、「コンテンツ」に設定されていることを確認してください)。

  2. _ViewStart.cshtml ファイルのビルド アクションが正しくありません (webdeploy パッケージに含まれるように、"Content" に設定されていることを確認してください)。

  3. 両方のファイルがプロジェクトに含まれていることを確認してください (ばかげているように聞こえるかもしれませんが、実際にそうでした)。

于 2014-02-07T21:08:43.043 に答える
1

~\Views\_ViewStart.cshtmlレイアウトが正しく設定されていないようです。

通常、その内容は次のようになります...

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
于 2013-02-27T21:18:17.797 に答える