Может ли RedirectToRouteResult работать с RazorGenerator.Mvc?
У меня есть проект, у которого есть некоторые представления в MVC5 .Net 4.5.2. Затем я добавил к решению второй проект MVC, который использует пакет разметок 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'
});
1 ответ
Это был просто URL, при локальном запуске мне не нужно было указывать домен.