MSoft 是不是为与 MVC3 应用程序一起使用的服务器端错误插件或工具提供持久的客户端错误报告?
Posted
技术标签:
【中文标题】MSoft 是不是为与 MVC3 应用程序一起使用的服务器端错误插件或工具提供持久的客户端错误报告?【英文标题】:Does MSoft provide a persistent client-side error reporting for server-side errors plugin or tool to use with MVC3 applications?MSoft 是否为与 MVC3 应用程序一起使用的服务器端错误插件或工具提供持久的客户端错误报告? 【发布时间】:2012-04-13 10:53:30 【问题描述】:我正在开发一个包含大量服务器端数据操作和工作的应用程序。我想向客户提供与这项工作相关的持续更新状态和错误报告。
例如,客户端可能会根据他上传的一些数据启动运行服务器端的一个作业或一批作业。然后他可能会继续在站点上做其他工作,而这些工作会继续运行。
MSoft 是否提供了一个很好的工具来向客户端显示状态更新和错误报告?我想象某种轮询 javascript 应用程序,或者可能是预定义的子表单等,它们可以位于页脚中,或者在适当的时候动态加载到屏幕的一角。
想想看,我可能会对这种工具的任何其他实现感到满意,只要它是最新的并且得到积极的支持。
【问题讨论】:
ASP.NET MVC3 没有异步支持,因为您可以启动后台进程并继续运行。 aspnet 工作进程被阻塞,直到所有异步进程完成。但是,您可以注册请求并让 Windows 服务处理它并在数据库中记录状态。 MVC 应用程序可以根据请求 ID 轮询状态。 【参考方案1】:我有类似的要求来刷新报告并沿着异步控制器路线走下去,直到我意识到这些限制。我决定实现一个解决方案,从 ASP.NET MVC3 应用程序注册报告刷新,并创建一个 Windows 服务,每 2 分钟轮询一次请求以进行处理。
查看
$("#btnRefresh").live("click", function(e)
$.ajax(
type: "POST",
url: '@Url.Action("Refresh")',
data: "reportId=@Model.Id"
)
.done(function(message)
alert(message);
)
.fail(function(serverResponse)
alert("Error occurred while processing request: " + serverResponse.responseText);
);
e.preventDefault();
);
控制器动作
[HttpPost, VerifyReportAccess]
public ActionResult Refresh(Guid reportId)
string message;
try
message = _publisher.RequestRefresh(reportId);
catch(Exception ex)
HttpContext.Response.StatusCode = (Int32)HttpStatusCode.BadRequest;
message = ex.Message;
return Json(message);
存储库
public string RequestRefresh(Guid reportId)
var scheduledReport = _repository.GetScheduleForReport(reportId);
if (scheduledReport.CompanyId == Guid.Empty)
throw new Exception("Requested Report Not Found");
if(_repository.CheckPendingRefresh(scheduledReport))
return "A request to refresh this report is already pending.";
_repository.ScheduleReportRefresh(scheduledReport);
return "A request to refresh the report has been submitted. The report will appear online when available.";
windows 服务运行与每晚 ETL 进程相同的类库代码来刷新报表。
【讨论】:
以上是关于MSoft 是不是为与 MVC3 应用程序一起使用的服务器端错误插件或工具提供持久的客户端错误报告?的主要内容,如果未能解决你的问题,请参考以下文章
尝试将 Node.js (Express) 设置为与虚拟主机一起使用,并遇到意外错误
在 MVC3 应用程序中将 Ninject 与自定义角色提供程序一起使用
C#,MVC3,如何将非泛型 DBSet 与运行时定义的类型一起使用?