Развернутое приложение Mvc не будет работать - PullRequest
0 голосов
/ 23 января 2012

У меня проблемы с публикацией приложения asp.net mvc3.При развертывании приложение завершается с ошибкой «Контроллер пути / Dashboard / Alarmes» не найден или не реализует IController », где Alarmes - это действие в DashboardController.Не уверен, что это как-то связано с этим, но Alarmes возвращает результат Json.

Еще одна вещь, которую я заметил, это то, что некоторые сборки, на которые ссылается другой проект в том же решении, не развертываются (только еслиЯ ссылаюсь на них в самом проекте 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);
        }
}

Ответы [ 2 ]

3 голосов
/ 23 января 2012

Я подозреваю, что вы жестко закодировали URL в своем javascript при вызове действия вместо использования помощника url.

Итак, вы написали:

<script type="text/javascript">
    $.getJSON('/Dashboard/Alarmes', function(result) {
        ...
    });
</script>

вместо:

<script type="text/javascript">
    $.getJSON('@Url.Action("Alarmes", "Dashboard")', function(result) {
        ...
    });
</script>

, который генерировал бы правильный URL-адрес в случае, когда ваше приложение размещено в виртуальном каталогечто будет:

<script type="text/javascript">
    $.getJSON('/MyAppName/Dashboard/Alarmes', function(result) {
        ...
    });
</script>
0 голосов
/ 23 января 2012

Что если вы попытаетесь очистить временные файлы ASP.Net и перезагрузить веб-сервер?[{windows-path} \ Microsoft.NET \ Framework {framework-version} \ Временные файлы ASP.NET]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...