Azure WebRole で完全に正常に動作する ASP.NET MVC 4 サイトがあります。ASP.NET MVC プロジェクトは独自に開始されました。その後、Azure クラウド サービス プロジェクトをソリューションに追加し、ASP.NET プロジェクト/サイトをサービスの「役割」の 1 つとして追加しました (したがって、 「ロール」フォルダ)。
私の問題は、ASP.NET MVC プロジェクト内で WebRole.cs ファイルを操作したいということですが、何をしようとしても、展開すると呼び出されないように見えます。OnStart と Run のオーバーライド (私が知っていることですが、決してループを離れてはなりません) - これらは明らかに呼び出されることはありません。
しかし、新しい CloudService プロジェクトを開始し、その時点で最初から ASP.NET MVC プロジェクトを追加すると、自動的に WebRole.cs ファイルが含まれるため、WebRole 用にどこかで何かを構成する必要があると思います。 .cs (実際には、RoleEntryPoint を継承する WebRole クラス) が呼び出されます。それは何でしょうか?
using System;
using System.Web;
//using Microsoft.WindowsAzure.StorageClient;
using System.Diagnostics;
using System.Threading;
namespace Us.WebUI
{
public class WebRole : Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint
{
public override bool OnStart()
{
return true; //return base.OnStart(); // CALL THIS???
}
public override void Run()
{
while (true) {
Thread.Sleep(TimeSpan.FromSeconds(30));
try {
EmailFuncs.SendEmailToUs("An email from our WebRole?????", "Email me this, email me that.");
}
catch { }
}
}
}
}
更新: ありがとう、質問は答えられました。しかし、追加します:これを行うと、明らかに機能していましたが(完全に展開され、エミュレーターで)、サイトの完全な公開を行う際に突然問題が発生しました。Azure の公開に 3 時間かかった後:
ストレージ アカウント 'xyz' を検証しています... > パッケージをアップロードしています... > - 更新しています... [ここに 3 時間滞在]、次のエラーで失敗しました: サーバーで内部エラーが発生しました。要求を再試行してください。私が疑問に思っていたことの 1 つは、WebRole.cs で OnStop をオーバーライドする必要があるかどうかということです。
更新 2: これらの以前の問題は修正されており、この問題とは何の関係もありません。実際、私は次のことを学びました。ビルドで警告が生成された場合、ローカルまたは他のホストで問題が発生していない場合でも、Azure は多くの場合、それらを処理しません。それ以来、私はビルドの警告にもっと熱心に取り組んできました (ただし、これには、無視したい多くの警告タイプを警告コードでオフにすることが重要です!)。