Asp.Net html.renderaction работает локально, но не на сервере без ошибок
Я на самом деле работаю над проектом Asp.Net MVC, и у меня есть проблема, чтобы загрузить представление из другого, используя Html.RenderAction
метод. И это только когда я пытаюсь получить доступ к представлению, когда решение развернуто на удаленном сервере.
Вот код, который я использую:
У меня есть представление Index.cshtml, которое выглядит следующим образом:
<section class="panel panel-default"> <section class="panel panel-default"> <header class="panel-heading">@Html.Localize("SmartContactMessages", "CustomersManagement")</header> <div class="row wrapper"> <div class="col-sm-5 m-b-xs"> <a class="btn btn-primary" href="@Url.Action("Create")"> <i class="fa fa-plus text"></i> <span class="text">@Html.Localize("SmartContactMessages", "Create")</span> </a> @*<a class="btn btn-danger" href="#" onclick="DeleteTerritories()"> <i class="fa fa-trash-o text"></i> <span class="text">@Html.Localize("SmartContactMessages", "Delete")</span> </a>*@ </div> </div> <div id="CustomerListZone"> @{ Html.RenderAction("List"); } </div>
Как видите, я использую метод Html.RenderAction для загрузки представления "Список".
List.schtml, отображает таблицу с различными предприятиями. (Не нужно отображать его код)
В моем контроллере у меня есть следующий код:
[Authorize(Roles = RoleConstantes.AdminGlobal)] public ActionResult List() { Logger.Info("List method enterred"); EnterpriseListMessage message = null; WcfService<IEnterpriseServiceContract>.Use(Logger, e => message = e.GetAll()); var smartContactEnterpriseListViewData = new SmartContactEnterpriseListViewData { CurrentPage = 0, ItemPerPage = 10, NbPage = 1, Total = 2 }; if (message != null && message.Success && message.Result != null) { smartContactEnterpriseListViewData.Entities = message.Result; //var t = new EnterpriseEntity[3]; //t[0] = new EnterpriseEntity {Id = 1, Name = "Test1", UuId = "AZERTY1234", IsActive = true}; //t[1] = new EnterpriseEntity {Id = 2, Name = "Test2", UuId = "WXCVBBN6548", IsActive = true}; //t[2] = new EnterpriseEntity {Id = 3, Name = "Test3", UuId = "QSDFDG542358", IsActive = false}; //smartContactEnterpriseListViewData.Entities = t; } else { if(message == null) Logger.Error("Get all enterprises fail : Message is null"); if(message != null && !message.Success) Logger.Error("Get all enterprises fail : Message success is false"); if(message != null && message.Success && message.Result == null) Logger.Error("Get all enterprises fail : Message result is null"); } return PartialView(smartContactEnterpriseListViewData); }
Этот метод должен получить все предприятия и вернуть его в View. Все это работает без проблем на моем локальном IIS. Но как только я создаю его на удаленном сервере, я больше не могу отображать это представление, и никакие ошибки не отображаются.
Я регистрирую метод List(), указав "Метод ввода списка", но на удаленном сервере он никогда не вызывается. Я также высмеял вызов WCF, чтобы подтвердить, что проблема не возникла отсюда (как вы можете увидеть закомментированный код в методе List)
Если у кого-то из вас есть идея, это будет оценено:)
1 ответ
Наконец я решил проблему. Проблема была не в авторизации роли. На самом деле, мой WCF вернул мне много данных, поэтому он вызвал поток maxBufferedSizeOverflow. На самом деле у меня меньше данных на локальном сервере, чем на удаленном. Поэтому я реализовал метод для возврата меньшего количества данных, установив нумерацию страниц. Задача решена!