MSoft 是否为服务器端错误插件或工具提供持久的客户端错误报告,以便与 MVC3 应用程序一起使用?

Does MSoft provide a persistent client-side error reporting for server-side errors plugin or tool to use with MVC3 applications?

提问人:blueberryfields 提问时间:3/30/2012 更新时间:3/30/2012 访问量:109

问:

我正在开发一个包含大量服务器端数据操作和工作的应用程序。我想向客户提供与这项工作相关的持续状态更新和错误报告。

例如,客户端可能会根据他上传的一些数据触发一个作业或一批运行服务器端的作业。然后,他可能会继续在网站上执行其他工作,而作业将继续运行。

MSoft 是否提供了一个很好的工具来向客户端显示状态更新和错误报告?我想象某种轮询 javascript 应用程序,或者可能是一个预定义的子表单等,它们可以位于页脚中,也可以在适当的时候动态加载到屏幕的一角。

想想看,我可能会对这种工具的任何其他实现感到满意,只要它是最新的并看到积极的支持。

JavaScript ASP.NET-MVC-3 处理错误 报告

评论

0赞 tawman 3/30/2012
ASP.NET MVC3 没有异步支持,因为您可以启动后台进程并继续运行。aspnet 辅助进程将被阻止,直到所有异步进程完成。但是,您可以注册请求并让 Windows 服务处理该请求并在数据库中记录状态。MVC 应用程序可以根据请求 ID 轮询状态。

答:

1赞 tawman 3/30/2012 #1

我也有类似的刷新报告要求,并沿着异步控制器路线前进,直到我意识到这些限制。我决定实现一个解决方案,从 ASP.NET MVC3 应用程序注册报表刷新,并制作了一个 Windows 服务,每 2 分钟轮询一次请求进行处理。

视图

$("#btnRefresh").live("click", function(e) {
    $.ajax({
            type: "POST",
            url: '@Url.Action("Refresh")',
            data: "[email protected]"
        })
        .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 进程相同的类库代码来刷新报表。