ASP.NET CORE使用控制台程序调试web应用
2016-11-06 19:30
781 查看
在控制台程序中,我们可以使用
但是在web应用中要做到实时查看日志输出就很麻烦,大致的做法有:
把日志信息输出到客户端
在asp.net环境下用
2.用vs查看控制台信息
在vs开发环境下,可以用
下面介绍,在asp.net core环境下,可以很方便的使用控制台console调试程序,大致方法有下面两个:
1,使用命令行启动web程序
首先,可以在Properties下的launchSettings.json指定监听的url。
然后,发布web项目。在项目图标上鼠标右键,就可以看到发布选项,新建自定义配置文件,然后根据提示操作便可,需要注意的是,在project.json中需要配置的选项
一般vs会自动帮我们生成配置,如果发布的时候没有包括前端文件,view或一些必要的文件,运行web时会报500错误。
发布后,就可以启动web应用了。
首先在用命令窗口打开发布文件所在的文件夹,然后运行
这里我把项目发布到项目里的
我的测试项目名是
这样便可以启动项目,代码中的
2,用控制台程序开发web
首先,创建一个.net core的控制台程序,项目结构十分简洁。
然后只需要修改Program.cs和添加Startup.cs文件就可以使用控制台程序转web应用。
对于Program.cs和Startup.cs文件的作用,不了解的同学可以看下下面介绍:
Program.cs
Startup.cs
ASP.NET Core 应用程序需要在宿主中执行,Program.cs用于创建宿主,Startup.cs用于设置程序配置并且将应用程序将要使用的服务连接起来。
代码如下:
对于这部分代码不熟的同学,可以先创建一个asp.net core的mvc web应用,然后直接复制黏贴里面的代码即可,黏贴后会报错,只要根据提示引入指定的程序包即可,引入程序包的时候要注意,要引入asp.net core的程序包,程序包和相关编译运行的配置可以在project.json中修改,但是由于需要引入的程序包较多,比容易跟asp.net的程序包弄乱,而且project.json配置文件相当重要,有一点错都会导致项目运行异常,所以建议直接拷贝web应用的project.json文件。
接着,就可以跟普通的web应用一样,添加controller或者view了,最后,ctrl + F5非断点运行,在浏览器输入http://localhost:5000/访问,就可以访问网页了。
默认情况下,asp.net core监听的是本机的5000端口,开发者可以根据实际需求进行修改,在Program.cs中配置。
至此,只要在程序的任意处加上
demo源码: 源码
学艺不精,如有错误,请在评论中指正,欢迎交流。
Console.WriteLine("debug")便可以很方便查看日志输出。
但是在web应用中要做到实时查看日志输出就很麻烦,大致的做法有:
把日志信息输出到客户端
在asp.net环境下用
Response.Write("debug log"),在asp.net core环境下可用controller中使用
return Content("debug log")将调试信息输出到浏览器进行查看,但是这样可能会打乱整个代码的逻辑,而且日志信息也会和前端页面混淆,效果不佳。
2.用vs查看控制台信息
在vs开发环境下,可以用
System.Diagnostics.Debug.WriteLine("debug log")代替
Console.WriteLine("debug"),但是日志信息并不是在控制台输出,而是在vs的
输出窗口输出,而且必须是在F5调式模式下,但是在Debug调试模式下,项目会比非断点调试下慢很多,所以效果也不佳。
下面介绍,在asp.net core环境下,可以很方便的使用控制台console调试程序,大致方法有下面两个:
1,使用命令行启动web程序
首先,可以在Properties下的launchSettings.json指定监听的url。
{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:5001/",//这个是由vs生成,指定调试模式下监听的地址,即ctrl+F5运行下使用的端口,可以自行修改,如果修改后无效,可以重启iis express "sslPort": 0 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "coremvc": { "commandName": "Project", "launchBrowser": true, "launchUrl": "http://localhost:5000",//指定生产模式下(即正式使用时)监听的地址,默认是监听5000端口 "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
然后,发布web项目。在项目图标上鼠标右键,就可以看到发布选项,新建自定义配置文件,然后根据提示操作便可,需要注意的是,在project.json中需要配置的选项
"publishOptions": { "include": [ "wwwroot", "**/*.cshtml", "appsettings.json", "web.config" ] },
一般vs会自动帮我们生成配置,如果发布的时候没有包括前端文件,view或一些必要的文件,运行web时会报500错误。
发布后,就可以启动web应用了。
首先在用命令窗口打开发布文件所在的文件夹,然后运行
dotnet 项目名.dll。
这里我把项目发布到项目里的
bin\Release\PublishOutput
我的测试项目名是
coremvc
这样便可以启动项目,代码中的
Console.Writeline("")都会在命令窗口中输入。
2,用控制台程序开发web
首先,创建一个.net core的控制台程序,项目结构十分简洁。
然后只需要修改Program.cs和添加Startup.cs文件就可以使用控制台程序转web应用。
对于Program.cs和Startup.cs文件的作用,不了解的同学可以看下下面介绍:
Program.cs
Startup.cs
ASP.NET Core 应用程序需要在宿主中执行,Program.cs用于创建宿主,Startup.cs用于设置程序配置并且将应用程序将要使用的服务连接起来。
代码如下:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting; namespace coremvc { public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace CoreWebConsole { public class Startup { public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); if (env.IsDevelopment()) { // This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately. builder.AddApplicationInsightsSettings(developerMode: true); } Configuration = builder.Build(); } public IConfigurationRoot Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddApplicationInsightsTelemetry(Configuration); services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); app.UseApplicationInsightsRequestTelemetry(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseApplicationInsightsExceptionTelemetry(); app.UseStaticFiles(); //app.UseMvc(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } } }
对于这部分代码不熟的同学,可以先创建一个asp.net core的mvc web应用,然后直接复制黏贴里面的代码即可,黏贴后会报错,只要根据提示引入指定的程序包即可,引入程序包的时候要注意,要引入asp.net core的程序包,程序包和相关编译运行的配置可以在project.json中修改,但是由于需要引入的程序包较多,比容易跟asp.net的程序包弄乱,而且project.json配置文件相当重要,有一点错都会导致项目运行异常,所以建议直接拷贝web应用的project.json文件。
{ "dependencies": { "Microsoft.NETCore.App": { "version": "1.0.1", "type": "platform" }, "Microsoft.ApplicationInsights.AspNetCore": "1.0.0", "Microsoft.AspNetCore.Diagnostics": "1.0.0", "Microsoft.AspNetCore.Mvc": "1.0.1", "Microsoft.AspNetCore.Razor.Tools": { "version": "1.0.0-preview2-final", "type": "build" }, "Microsoft.AspNetCore.Routing": "1.0.1", "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", "Microsoft.AspNetCore.StaticFiles": "1.0.0", "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", "Microsoft.Extensions.Configuration.Json": "1.0.0", "Microsoft.Extensions.Logging": "1.0.0", "Microsoft.Extensions.Logging.Console": "1.0.0", "Microsoft.Extensions.Logging.Debug": "1.0.0", "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0" }, "tools": { "BundlerMinifier.Core": "2.0.238", "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" }, "frameworks": { "netcoreapp1.0": { "imports": [ "dotnet5.6", "portable-net45+win8" ] } }, "buildOptions": { "emitEntryPoint": true, "preserveCompilationContext": true }, "runtimeOptions": { "configProperties": { "System.GC.Server": true } }, "publishOptions": { "include": [ "wwwroot", "**/*.cshtml", "appsettings.json", "web.config" ] }, "scripts": { "prepublish": [ "bower install", "dotnet bundle" ], "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] } }
接着,就可以跟普通的web应用一样,添加controller或者view了,最后,ctrl + F5非断点运行,在浏览器输入http://localhost:5000/访问,就可以访问网页了。
默认情况下,asp.net core监听的是本机的5000端口,开发者可以根据实际需求进行修改,在Program.cs中配置。
public static void Main(string[] args) { var host = new WebHostBuilder() .UseUrls("http://127.0.0.1:20000", "http://127.0.0.1:20001") .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); }
至此,只要在程序的任意处加上
Console.WriteLine("debug")便可以在控制台中看见日志信息了。
demo源码: 源码
学艺不精,如有错误,请在评论中指正,欢迎交流。
相关文章推荐
- [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果
- ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用
- 创建第一个ASP.NET CORE程序 使用DBFirst模式连接数据库
- ABP示例程序-使用AngularJs,ASP.NET MVC,Web API和EntityFramework创建N层的单页面Web应用
- 开始使用ASP.NET Core - 创建第一个Web应用
- ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用
- 使用Jexus服务器运行Asp.Net Core2.0程序
- ASP.NET Core2.0 使用VSCode 版本1.13.1工具 开发控制台运行出现中文乱码问题及解决方法
- 使用VS Code开发调试ASP.NET Core 1.0
- 使用ASP.NET AJAX Control Toolkit中的NoBot控件拒绝垃圾发布程序
- 使用DreamWeaverMX快速开发ASP.NET Web应用
- (WebSite----Asp.Net Configuration----->无法连接到SQL Server数据库------>选择数据存储区---->应用程序当前被配置为使用提供程序:AspNetSqlProvider)解决方案
- asp.net程序编译调试时偶尔出现访问被拒绝的错误
- (WebSite----Asp.Net Configuration----->无法连接到SQL Server数据库------>选择数据存储区---->应用程序当前被配置为使用提供程序:AspNetSqlProvider)解决方案
- 使用WebDevHelper辅助ASP.NET AJAX程序开发
- asp.net程序编译调试时偶尔出现访问被拒绝的错误的解决方法
- 如何使用 Xenocode 、 Dotfuscator 混淆asp.net程序??
- 使用ASP.NET程序来管理文件或目录的一种方案!!
- 使用@Page指令的Src 属性 简化对老版本的 asp.net程序的维护
- 使用ASP.NET开发遵循HTML/XHTML+CSS规范的的Web应用