asp.net mvc3アプリケーションを公開するにはいくつかの問題があります。デプロイされると、アプリケーションは「パスのコントローラー/ Dashboard/Alarmes 'が見つからなかったか、IControllerを実装していません」というエラーで失敗します。ここで、AlarmesはDashboardControllerのアクションです。それに関係があるかどうかはわかりませんが、AlarmsはJsonの結果を返します。デプロイされたMvcアプリは動作しません
私が気づいたもう一つの点は、同じソリューションの別のプロジェクトから参照されるアセンブリの中には展開されないものがあることです(mvcプロジェクト自体で参照する場合のみ)。
これらについてのヒント
更新:
ルート登録:
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*allpng}", new { allpng = @".*\.png(/.*)?" });
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.IgnoreRoute("{directory}/{resource}.asmx/{*pathInfo}");
routes.MapRoute("Default", "{controller}/{action}/{id}", new {
controller = "Dashboard",
action = "Index",
id = UrlParameter.Optional
});
}
アクション:
public ActionResult Alarmes() {
var alarmesPorPonto = new Dictionary<string, List<Ponto>>();
var alarmes = _repositorioDeAlarmes.Pesquise(ObtenhaInicio(), DateTime.Today);
foreach (var alarme in alarmes) {
var tipo = alarme.Tipo;
var ponto = alarme.Ponto;
if (!alarmesPorPonto.ContainsKey(tipo.Nome)) {
alarmesPorPonto.Add(tipo.Nome, new List<Ponto>());
}
if (!alarmesPorPonto[tipo.Nome].Contains(ponto)) {
alarmesPorPonto[tipo.Nome].Add(ponto);
}
}
return Json(alarmesPorPonto.Select(a => new { Tipo = a.Key, a.Value.Count }), JsonRequestBehavior.AllowGet);
}
別の行方不明情報:私は、仮想ディレクトリに、このアプリケーションをデプロイしています。
アップデート2
フルコントローラクラス:
public class DashboardController : Controller {
private readonly IRepositorioDeAlarmes _repositorioDeAlarmes;
private readonly bool _enableMap;
public DashboardController(IRepositorioDeAlarmes repositorioDeAlarmes) {
_repositorioDeAlarmes = repositorioDeAlarmes;
_enableMap = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableMap"]);
}
public ActionResult Index() {
ViewBag.EnableMap = _enableMap;
return View();
}
public ActionResult Alarmes() {
var alarmesPorPonto = new Dictionary<string, List<Ponto>>();
var alarmes = _repositorioDeAlarmes.Pesquise(ObtenhaInicio(), DateTime.Today);
foreach (var alarme in alarmes) {
var tipo = alarme.Tipo;
var ponto = alarme.Ponto;
if (!alarmesPorPonto.ContainsKey(tipo.Nome)) {
alarmesPorPonto.Add(tipo.Nome, new List<Ponto>());
}
if (!alarmesPorPonto[tipo.Nome].Contains(ponto)) {
alarmesPorPonto[tipo.Nome].Add(ponto);
}
}
return Json(alarmesPorPonto.Select(a => new { Tipo = a.Key, a.Value.Count }), JsonRequestBehavior.AllowGet);
}
}
ルーティング設定コードとDashboardControllerコードを投稿できますか? – jolySoft
コントローラークラス定義も投稿できますか?このコントローラを含むアセンブリは、配備されたWebサイトの 'bin'フォルダにありますか? –
@ダリンはいそうです。ページ自体にアクセスできますが、アクション「アラーム」への呼び出しは失敗します。 – Fernando