0

最後に、MVC アプリを Azure クラウド サービスに公開します。私のデータベースもそこにあります。WindowsAzure プロジェクトをソリューションに追加し、2 つのプロジェクト (モデルと Web) をロールとして追加した後、アプリをローカルで実行できます。

しかし、URL を実行するとエラーが発生します。

説明:サーバーでアプリケーション エラーが発生しました。このアプリケーションの現在のカスタム エラー設定では、アプリケーション エラーの詳細をリモートで表示できません (セキュリティ上の理由から)。ただし、ローカル サーバー マシンで実行されているブラウザで表示することはできます。

だから私は設定して再公開しましたが、それでも同じエラーが発生します

Azure に何が起こっているかを教えてエラーを明らかにするように強制する必要があります。

http://bizoptcloudservice01.cloudapp.net

4

2 に答える 2

2

いいえ、Azure クラウド サービスに組み込まれたログはありません。独自に実装できますが、それにはいくつかの実装が必要です。私のソリューションには、作成したカスタム エラー ページがあります。私のWeb設定は次のようになります:

<customErrors mode="On" defaultRedirect="~/error/Error">
 ...
</customErrors>

ビュー/共有ディレクトリに「Error.cshtml」という名前のビューがあります。上記の構成では、アプリケーションにエラーがあるたびに表示されます。

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error";
}

<h2> Sorry, an error occurred while processing your request!!?!</h2>

<div>
    Try again.  If the problem persists...
    Close all your browser windows and re-login to the application. If the problem still persists...
    Contact the service desk with the details of this error.
</div>

        <h3>Error Details</h3>
        <div>
        <strong>
        @Model.Exception.Message
        </strong>
            <pre>@Model.Exception.StackTrace</pre>
    </div>
    </div>
</div>  

また、上記を機能させるには、これを Global.ascx.cs に追加する必要があります。エラーが発生した場合のアプリケーションのデフォルトの動作を定義します。そのようです:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute()); 
    }

これについては、いくつかの詳細について説明しているブログ投稿があります。

その投稿とこの回答もエラーのログに記録されます。開始する必要があるそのルートに進みたい場合:

ASP.NET MVC コントローラーの結果で HTTP ステータスを設定してもビューがレンダリングされない

于 2013-01-14T14:25:54.840 に答える
1

web.config 設定を変換で上書きしていないことを確認してください。MVC プロジェクト用の Visual Studio 2012 テンプレートは、次の行を web.config.release ファイルに自動的に追加します。

アプリの公開時に web.config が変換されている可能性があります。

編集:また、ELMAH を確認することもできます。これは優れたログ ツールであり、プロジェクトに簡単に追加でき、各エラーで失われた情報を確認できます。

于 2013-02-14T05:23:00.287 に答える