我有一个关于IIS如何处理Web应用程序请求的问题,主要针对asp.net mvc。 现在让我说我有以下动作方法,可以从用户浏览器调用: -
Public ActionResult Test (string test, string test2)
{
var a = context.singleOrDefault(a=>a.ID =test);
var b = context.Table.tolist();
a.Name="NewName";
var b = context.SingleOrDefault(a2=>a2.ID = test2)
b.status = "active";
context.SaveChanges();
return View();
}
现在,当用户按如下方式调用操作方法时: -
https://servername/controllername/Test?test=1&test2=2
这将是IIS执行方案??: -
global.asax
文件中调用此操作方法,如下所示: -
public class MvcApplication : System.Web.HttpApplication
{
static void ScheduleTaskTrigger()
{
HttpRuntime.Cache.Add("ScheduledTaskTrigger",
string.Empty,
null,
Cache.NoAbsoluteExpiration,
TimeSpan.FromMinutes(10),
CacheItemPriority.NotRemovable,
new CacheItemRemovedCallback(PerformScheduledTasks));
}
static void PerformScheduledTasks(string key, Object value, CacheItemRemovedReason reason)
{
HomeController h = new HomeController();
var c = h.Test("1","2");//
ScheduleTaskTrigger();
}
所以在这种情况下IIS会参与动作方法执行吗?因为当我从global.asax
调用动作方法时,不会有任何请求,所以这是否意味着iis不会得到受影响?换句话说,当我从global.asax
调用一个动作方法时,不会占用任何IIS线程?或者因为Web应用程序是在IIS下部署的,所以后台工作也是如此。执行仍然会发生在IIS线程中吗?
答案 0 :(得分:1)
如果从.NET代码中调用控制器的操作方法,则调用不会发送到IIS并返回到.NET。不涉及HTTP。它与调用任何其他.NET方法的任何.NET方法没有什么不同。