1.每来一个请求,会启动一个线程。 可以通过下面代码打印出来。
这个线程是主线程,如果用异步,会等待异步线程执行完毕才会返回。
这有个现象,用stmp 发邮件的时候,即使用异步,也会比较卡(选用的邮件服务器性能有限,Stmp 的异步机制有问题),这种情况,可能需要用一个线程和一个队列来专一发邮件。
public async Task<string> Index()
{
await myTask();
var t= Thread.CurrentThread.ManagedThreadId.ToString();
return "当前线程ID: "+t;
}
private async Task myTask()
{
await Task.Run(()=>Thread.Sleep(3000));
}
2.新建。netFrameWork 项目。
public string Index() { ViewBag.Title = "Home Page"; // 获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。 string str2 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; return str2; }
如果是VS调试,显示的是 C:Program Files (x86)IIS Expressiisexpress.exe
如果是部署在IIS 上,显示的是 c:windowssystem32inetsrvw3wp.exe
3. 新建.netcore web 项目。会有
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>().Build().Run(); 这样的代码。我们查看源码,WebHost 这个类,是 Microsoft.AspNetCore.2.2.0lib
etstandard2.0Microsoft.AspNetCore.dll 这个下的,这个是netstandard2.0,也就是说是独立的,更底层的东西。
那我们新建 .NetframeWork 控制台(4.5 以上 才实现netstandard2.0), 把这几句拷过去,也启动了网站。