7

MVC プロジェクトの発行に問題があります。すべてをWebサーバーに公開してアップロードすると、次のようになります。

[InvalidOperationException: The view 'Index' or its master could not be found. The following locations were searched:
~/Views/Home/Index.aspx
~/Views/Home/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx]

奇妙なことに、Index.aspx は ~/Views/Home/ に存在しますが、IIS はそれを見つけることができません。プロジェクト全体を Web サーバーにコピーし、asp.net にその場でコンパイルさせると、魅力的に機能します。

私のルーティングコード:

  routes.MapRoute( _
    "Default", _
    "{controller}/{action}/{id}", _
    New With {.controller = "Home", .action = "Index", .id = ""} _
  )

  routes.MapRoute("Root", "", New With {.controller = "Home", .action = "Index", .id =""})

Windows 2008 Web サーバーで IIS7 を使用しています。ASP.NET MVC 1.0、Visual Studio 2008。Windows 7 で IIS7 を使用してローカルで試しましたが、同じエラーが発生しました。

更新- 新しい MVC プロジェクトを作成し、すべてのファイルをそれに追加しました。参照プロジェクトは、コンパイルされたバイナリとして参照されています。「アプリケーションの実行に必要なファイルのみ」を公開した後、同じエラーが発生します。

4

8 に答える 8

1

この問題の解決策は、それが現れるのと同じくらい奇妙です。

マスター コード ビハインド ファイルが Public ではなく Partial として宣言され、マスター定義が

<%@ Master Language="VB" Inherits="SiteFrontPageMaster"  ClassName="SiteFrontPageMaster" CodeFile="SiteFrontPageMaster.Master.vb"  %>

そして、そうあるべきだった

<%@ Master Language="VB" Inherits="mymvcproject.SiteFrontPageMaster" CodeBehind="SiteFrontPageMaster.Master.vb" %>

Cassini では受け入れられ、IIS では受け入れられなかった理由は、私の理解力を超えています。この答えが他の誰かの私の頭痛の種を救うことを願っています.

于 2010-03-27T19:09:23.933 に答える
0

Index.aspxのマスターページも存在するかどうかを確認します。
「Webサイト」プロジェクトを使用している場合は、サイトを公開するときに「このプリコンパイル済みサイトを更新可能にする」オプションを選択してみてください。
「Webアプリケーション」プロジェクトを使用している場合は、公開時に「コピー-すべてのプロジェクトファイル」オプションを選択してみてください。

ビューのみをコピーするようにしてください。マーカーファイルが原因で、プリコンパイルされたASP.NET MVCプロジェクトはうまく機能しないと思います(プリコンパイル時に.aspxファイルとascxファイルがマーカーファイルに置き換えられます)。

IIS 6以下を使用している場合は、asp.netmvcの展開ガイドを確認してください-http://www.asp.net/learn/mvc/tutorial-08-cs.aspx 。

于 2010-01-30T21:28:11.250 に答える
0

前のリンクを削除しました。これは、 http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7/についてもう少し詳しく説明しています。

ローカルの asp.net webdev サーバーを使用して開発している場合は、HttpHandlers と HttpModules の一部を削除してから、セクションに追加し直す必要があります。これにより、IIS7 はそれらを統合モードで実行するように指示されます。これは、MVC を含む IIS 7 サーバーにアプリを展開するときに必要です。参考例として以下を参照してください。

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="ScriptModule" />
      <remove name="UrlRoutingModule" />
<add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />
      <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </modules>
<handlers>
  <remove name="WebServiceHandlerFactory-Integrated" />
  <remove name="ScriptHandlerFactory" />
  <remove name="ScriptHandlerFactoryAppServices" />
  <remove name="ScriptResource" />
  <remove name="MvcHttpHandler" />
  <remove name="UrlRoutingHandler" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
          <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
          <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </handlers>
      </system.webServer>

それが役立つことを願って、

エディ

PS。古いリンクhttp://www.asp.net/(S(ywiyuluxr3qb2dfva1z5lgeg))/learn/mvc/tutorial-08-cs.aspx

于 2010-02-28T06:13:31.540 に答える
0

プロジェクト全体をコピーするときに機能するため、必要なすべてのファイルをコピーしていない可能性がありますか? 非標準の参照が[ローカルにコピー] に設定されていることを確認し、[ビルド] メニューの組み込みの発行機能を使用して、プロジェクトの実行に必要なファイルを取得します。

于 2010-03-24T11:56:01.457 に答える
0

サーバー上の権限を確認し、asp.net ワーカー プロセスがビュー フォルダー、サブフォルダー、およびファイルに対して正しい権限を持っていることを確認します。

また、IIS インスタンスはクラシック モードまたは統合パイプライン モードで実行されていますか?

于 2010-02-21T15:36:14.000 に答える
0

1) Check if your Index.aspx included in the project. (exists in publish result folder) Locally at VS it may works, but on publish it will not be copied.

2) Check if Views/web.config file included in the project - it affects the was ASP.NET MVC compile the Views.

3) Check if Index.aspx has Build Action = Content (in properties window).

于 2010-02-18T18:30:33.617 に答える
0

使用している View("Index", ...) の正確な呼び出しは何ですか。2 番目のパラメーターは文字列である可能性があります。この場合、View- メソッドの別のオーバーロードが使用されます。2 番目のパラメーターはマスター ページの名前です。

解決策: 2 番目のパラメーターをオブジェクトとしてキャストするだけです。

于 2010-03-14T14:43:45.497 に答える
-1

URLのコントローラー部分に.aspxを追加してみてください(例:http://myserver/appname/Index.aspx/Home)-私が正しく覚えている場合、IIS7には、次の場合を除いて、MVCアプリがコントロール/アクションURLを正しく表示する問題があります。 .aspxサフィックスを使用してコントローラー部分を参照しますb)サーバーの設定を微調整しますが、これはそのサーバー上のすべてのアプリに影響しますc)アドオンをロードしますこれに関する良い記事を見つけましたが、見つかりません、検索して.aspxソリューションが適切でない場合は、自分で見つけることができると確信しています。

于 2010-02-23T12:52:43.333 に答える