.netcore
1、用cmd 方式启动.net core 在.netcore 项目文件夹路径的地方输入cmd,或者打开cmd然后进入.net core 项目文件中。在cmd中输入dotnet run就将.net core 项目启动起来了,他是一个控制台引用程序,可以启动多个,来进行布置微服务。
Cmd启动asp.netcore 网站
在程序路径输入cmd,在路径点击backspace 然后输入cmd
dotnet 程序名称.dll –urls=”http://*:5177” 这种方式是自定义端口号
2、动态调试.net core
public void ConfigureServices(IServiceCollection services)
{
//能够动态调试
services.AddRazorPages().AddRazorRuntimeCompilation();
//注册服务器端缓存
services.AddResponseCaching();
services.AddControllersWithViews();
}
3、服务器端缓存
public void ConfigureServices(IServiceCollection services)
{
//能够动态调试
services.AddRazorPages().AddRazorRuntimeCompilation();
//注册服务器端缓存
services.AddResponseCaching();
services.AddControllersWithViews();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
//使用服务器端缓存
app.UseResponseCaching();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
//api模式
//endpoints.MapControllers();
//mvc模式
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Home}/{id?}");
});
}
4、引入log4net.AspNetCore日志包
通过nuget导入该包,在Program.cs类中public static IHostBuilder CreateHostBuilder这个函数里面增加
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>//制定一个web服务器,-kestrel
{
webBuilder.UseStartup<Startup>();
}).ConfigureLogging((contenxt,loggingBuilder)=> {
loggingBuilder.AddFilter("System", LogLevel.Warning);
loggingBuilder.AddFilter("Microsoft",LogLevel.Warning);
loggingBuilder.AddLog4Net(); //使用log4net;
});
然后添加一个log4net.config的文件。
文件内容是:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<!-- Pattern to output the caller's file name and line number -->
<conversionPattern value="%date %5level %logger.%method [%line] - %property{scope} %property{test} MESSAGE: %message%newline %exception" />
</layout>
</appender>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="log/log.log" />
<appendToFile value="true" />
<maximumFileSize value="100KB" />
<maxSizeRollBackups value="2" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %5level %logger.%method [%line] - %property{scope} %property{test} MESSAGE: %message%newline %exception" />
</layout>
</appender>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %5level %logger.%method [%line] - %property{scope} %property{test} MESSAGE: %message%newline %exception" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ManagedColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<foreColor value="Red" />
</mapping>
<mapping>
<level value="WARN" />
<foreColor value="Yellow" />
</mapping>
<mapping>
<level value="INFO" />
<foreColor value="White" />
</mapping>
<mapping>
<level value="DEBUG" />
<foreColor value="Green" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %5level %logger.%method [%line] - %property{scope} %property{test} MESSAGE: %message%newline %exception" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFile" />
<appender-ref ref="TraceAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
5、两种托管模式:进程外托管:利用。netcore 自带的kestrel,进程内托管:利用iis
双击打开项目,进入项目的配置文件,在PropertyGroup节点增加: 进程外:<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel> 。进程内:
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
6、asp.netcore 源代码:https://github.com/aspnet/AspNetCore
7、中间件:如果在startup.cs中的Config函数中增加以下几行代码
app.Use(async (content, next) => {
Console.WriteLine("1.start");
await next();
Console.WriteLine("1.end");
});
app.Use(async (content, next) => {
Console.WriteLine("2.start");
await next();
Console.WriteLine("2.end");
});
app.Use(async (content, next) => {
Console.WriteLine("3.start");
await next();
Console.WriteLine("3.end");
});
然后运行:结果是
1.start
2.start
3.start
3.end
2.end
1.end