0
我想从Global.asax.cs调用控制器的操作方法。来自global.asax的调用操作方法
这里是我的actionMethod:
[HttpGet]
public async Task<ActionResult> ErrorInsert(int Id, string severity, string description,string details)
{
return new EmptyResult();
}
我要捕捉时在Global.asax中IIS意外关闭
protected void Application_End()
{
var s_activityGuid = Guid.NewGuid();
try
{
System.Web.ApplicationShutdownReason shutReason = System.Web.Hosting.HostingEnvironment.ShutdownReason;
string shutMessage = string.Empty;
//var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
var routeData = new RouteData();
routeData.Values["controller"] = "ErrorRouting";
routeData.Values["action"] = "ErrorInsert";
if (shutReason == System.Web.ApplicationShutdownReason.BinDirChangeOrDirectoryRename)
{
shutMessage = "There is a shut down because of change to the Bin folder or files contained in it.";
routeData.Values["Id"] = 1;
routeData.Values["severity"] = "Error";
routeData.Values["description"] = shutReason;
routeData.Values["details"] = shutMessage;
IController routeController = new ErrorRoutingController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
diagnosticController.Execute(rc);
//Response.Redirect(urlHelper.Action("ErrorInsert", "ErrorRouting",new { Id=1200, severity= "Error", description= shutReason, details= shutMessage }));
}
log.WriteEntry(shutMessage, EventLogEntryType.Error);
}
catch (Exception ex)
{
}
}
}
我与Response.Redirect的和controller.excute试过事件()方法。
在这两种情况下,我都将HttpContext设置为Null并且失败。
要求是应该调用上述操作方法并在Application_End()方法中继续执行。
请让我知道我该怎么做。
我不确定为什么HttpContext会变为空?
它为什么需要是一个记录您的信息的行动方法?为什么不能只是调用一个普通的方法? – Luke
您不需要实际调用操作方法。但是,如果你想这么做,然后给一个API调用或呼吁从C#代码行动。你可以使用HttpClient进行调用。 – Pavvy
从动作方法,我正在做一个Api调用插入到数据库。 –