Может ли RedirectToRouteResult работать с RazorGenerator.Mvc?

У меня есть проект с некоторыми представлениями в MVC5 .Net 4.5.2. Затем я добавил к решению второй проект MVC, который использует пакет nuget razorgenerator для предварительной компиляции представлений, чтобы их можно было использовать в первом проекте. Затем я использовал пользовательскую коллекцию GlobalFilterCollection, которую добавил в GlobalFilters, чтобы направить пользователя либо к представлению в первом проекте, либо к определенному представлению во втором проекте.

Этот сценарий отлично работает при локальном запуске в VS2013 (IIS Express). Однако, когда я помещаю его на сервер (Win server 2008, IIS7), он не может найти представления при вызове javascript, а только представления, вызываемые изначально.

Любые идеи?

Маршруты определены:

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Index", action = "Index", id = UrlParameter.Optional }
            );

Используемый фильтр:

override public void OnActionExecuting(ActionExecutingContext filterContext)
{
    else
    {
        string requestedAction = (filterContext.ActionDescriptor).ActionName;
        string requestedController = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;

        //If we are already going to the controller action which serves the login view when not logged in, then ignore the filter:
        if ((requestedAction == "Login" || requestedAction == "LoginAction") && requestedController == "DBLogin")
        {
            base.OnActionExecuting(filterContext);
            return;
        }

        var Session = filterContext.HttpContext.Session;

        //If we got here, then another page was requested, so verify the login and change the route if necessary:
        if (Session["IsLoggedIn"] != null && (bool)Session["IsLoggedIn"] == true)
        {
            base.OnActionExecuting(filterContext);
            return;
        }
        else
        {
            RouteValueDictionary reRouter = new RouteValueDictionary();
            reRouter.Add("action", "Login");
            reRouter.Add("controller", "DBLogin");
            filterContext.Result = new System.Web.Mvc.RedirectToRouteResult(reRouter);
        }
    }
}

Javascript вызывается для запроса последующего представления, которое не работает в IIS:

$.support.cors = true;
$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: SERVER_TO_USE + "/DBLogin/LoginAction",
    data: parameters,
    success: function (data, textStatus, jqXHR) {
        callBackLoginSuccess(data);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log(textStatus);
        console.log(errorThrown);
        hasError = true;
        lastErrorMessage = errorThrown;
    },
    complete: function (jqXHR, textStatus) {
        if (hasError) {
            var errorObject = ErrorHandling.BuildClientSideError(lastErrorMessage);
            ErrorHandling.ShowErrors(errorObject);
        }
    },
    dataType: 'json'
});

person Chris    schedule 11.06.2014    source источник


Ответы (1)


Это был просто URL-адрес, при локальном запуске мне не нужно было указывать домен.

person Chris    schedule 11.06.2014