Asp.Net html.renderaction 在本地工作但在服务器上不工作没有错误
Asp.Net html.renderaction works locally but not on server no error
我实际上正在处理 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,显示table与不同的企业。 (无需显示其代码)
在我的控制器中,我有以下代码:
[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);
}
此方法必须获取所有企业并 return 才能查看。
所有这些在我的本地 IIS 上都可以正常工作。
但是一旦我在远程服务器上构建它,我就不能再显示这个视图了,也没有显示错误。
我通过指定 "List method enterred" 记录了 List() 方法,但在远程服务器上从未调用它。我还模拟了对 WCF 的调用以确认问题不是来自这里(正如您在 List 方法中看到的注释代码)
如果你们中的任何一个有任何想法,那将不胜感激:)
终于解决了这个问题。
问题不在于角色授权。实际上,我的 WCF return 让我获取了很多数据,因此它触发了 maxBufferedSizeOverflow。事实上,我本地服务器上的数据少于远程服务器上的数据。
因此,我通过建立分页实现了一种 return 更少数据的方法。
问题已解决!
我实际上正在处理 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,显示table与不同的企业。 (无需显示其代码)
在我的控制器中,我有以下代码:
[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); }
此方法必须获取所有企业并 return 才能查看。 所有这些在我的本地 IIS 上都可以正常工作。 但是一旦我在远程服务器上构建它,我就不能再显示这个视图了,也没有显示错误。
我通过指定 "List method enterred" 记录了 List() 方法,但在远程服务器上从未调用它。我还模拟了对 WCF 的调用以确认问题不是来自这里(正如您在 List 方法中看到的注释代码)
如果你们中的任何一个有任何想法,那将不胜感激:)
终于解决了这个问题。 问题不在于角色授权。实际上,我的 WCF return 让我获取了很多数据,因此它触发了 maxBufferedSizeOverflow。事实上,我本地服务器上的数据少于远程服务器上的数据。 因此,我通过建立分页实现了一种 return 更少数据的方法。 问题已解决!