Asp.Net html.renderaction在本地工作但不在服务器上工作没有错误

时间:2015-08-17 12:26:19

标签: c# asp.net-mvc iis view 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”。

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 method enterred”来记录List()方法,但是在远程服务器上永远不会调用它。我还嘲笑了对WCF的调用以确认问题不是来自这里(因为你可以看到List方法中的注释代码)

如果你们中的任何一个人有任何想法,那将是apreciated:)

1 个答案:

答案 0 :(得分:0)

最后我解决了这个问题。 问题不在于角色授权。实际上,我的WCF向我返回了很多数据,因此它触发了maxBufferedSizeOverflow。事实上,我本地服务器上的数据少于远程服务器上的数据。 所以我通过建立分页来实现一种方法来返回更少的数据。 问题解决了!