Asp.net mvc 是否可以调试Quartz.NET Windows服务?
我在一个解决方案中有我的应用程序代码,在另一个解决方案中有Quartz.Net代码。我的应用程序代码连接到服务并注册作业,但在Quartz.NET解决方案中没有遇到断点,尽管Quartz.NET代码的Visual Studio实例已附加到服务进程。(出于兴趣,在我的应用程序中注册作业时,我可以进入Quartz.Net源代码。它会将源代码加载到我的应用程序的Visual Studio实例中。)Asp.net mvc 是否可以调试Quartz.NET Windows服务?,asp.net-mvc,quartz.net,Asp.net Mvc,Quartz.net,我在一个解决方案中有我的应用程序代码,在另一个解决方案中有Quartz.Net代码。我的应用程序代码连接到服务并注册作业,但在Quartz.NET解决方案中没有遇到断点,尽管Quartz.NET代码的Visual Studio实例已附加到服务进程。(出于兴趣,在我的应用程序中注册作业时,我可以进入Quartz.Net源代码。它会将源代码加载到我的应用程序的Visual Studio实例中。) 如果我从包含应用程序代码的Visual Studio实例将调试器附加到服务进程,则自定义作业源代码中的断
干杯,伊恩。你也复制了自定义作业.pdb文件了吗
您还可以将生成目标更改为位于Quartz.Net文件夹中,无需保留复制文件。您也复制了自定义作业.pdb文件吗
您还可以将生成目标更改为位于Quartz.Net文件夹中,无需保留复制文件。我这样做的方式是在作业开始时添加一些代码,如:
if (System.Diagnostics.Debugger.IsAttached)
System.Diagnostics.Debugger.Break();
然后打开VisualStudio并将调试器附加到Quartz.Net服务。当作业开始时,它将进入调试器,然后我可以在其他位置添加断点。我这样做的方式是在作业开始时有一些代码,如:
if (System.Diagnostics.Debugger.IsAttached)
System.Diagnostics.Debugger.Break();
然后打开VisualStudio并将调试器附加到Quartz.Net服务。当作业开始时,它将进入调试器,然后我可以在其他位置添加断点。我要做的是创建一个Asp.Net core控制台应用程序,并使用应用程序可执行文件使用
sc
创建一个Windows服务。下面是我的程序
课程
using Backup.Service.Extensions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
namespace Backup.Service
{
public class Program
{
static async Task Main(string[] args)
{
var isDebugging = !(Debugger.IsAttached || args.Contains("--console"));
var hostBuilder = new HostBuilder()
.ConfigureServices((context, services) =>
{
services.AddHostedService<BackupService>();
});
if (isDebugging)
{
await hostBuilder.RunTheServiceAsync();
}
else
{
await hostBuilder.RunConsoleAsync();
}
}
}
}
使用Backup.Service.Extensions;
使用Microsoft.Extensions.DependencyInjection;
使用Microsoft.Extensions.Hosting;
使用制度;
使用系统诊断;
使用System.Linq;
使用System.Threading.Tasks;
命名空间备份服务
{
公共课程
{
静态异步任务主(字符串[]args)
{
var isDebugging=!(Debugger.IsAttached | | args.Contains(“--console”);
var hostBuilder=new hostBuilder()
.ConfigureServices((上下文、服务)=>
{
services.AddHostedService();
});
如果(isDebugging)
{
等待hostBuilder.RunTheServiceAsync();
}
其他的
{
等待hostBuilder.RunConsoleAsync();
}
}
}
}
如果我们在本地/调试运行应用程序,我们将调用扩展方法RunConsoleAsync(),否则我们将调用自己的自定义扩展方法runtheservicesync()
我已经就这个话题写了一篇完整的文章,你可以阅读。您还可以在GitHub中看到完整的源代码。我要做的是创建一个Asp.Net核心控制台应用程序,并使用应用程序可执行文件使用
sc
创建一个Windows服务。下面是我的程序
课程
using Backup.Service.Extensions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
namespace Backup.Service
{
public class Program
{
static async Task Main(string[] args)
{
var isDebugging = !(Debugger.IsAttached || args.Contains("--console"));
var hostBuilder = new HostBuilder()
.ConfigureServices((context, services) =>
{
services.AddHostedService<BackupService>();
});
if (isDebugging)
{
await hostBuilder.RunTheServiceAsync();
}
else
{
await hostBuilder.RunConsoleAsync();
}
}
}
}
使用Backup.Service.Extensions;
使用Microsoft.Extensions.DependencyInjection;
使用Microsoft.Extensions.Hosting;
使用制度;
使用系统诊断;
使用System.Linq;
使用System.Threading.Tasks;
命名空间备份服务
{
公共课程
{
静态异步任务主(字符串[]args)
{
var isDebugging=!(Debugger.IsAttached | | args.Contains(“--console”);
var hostBuilder=new hostBuilder()
.ConfigureServices((上下文、服务)=>
{
services.AddHostedService();
});
如果(isDebugging)
{
等待hostBuilder.RunTheServiceAsync();
}
其他的
{
等待hostBuilder.RunConsoleAsync();
}
}
}
}
如果我们在本地/调试运行应用程序,我们将调用扩展方法RunConsoleAsync(),否则我们将调用自己的自定义扩展方法runtheservicesync()
我已经就这个话题写了一篇完整的文章,你可以阅读。您还可以在GitHub中看到完整的源代码。是的,我复制了自定义作业。pdb。是的,我复制了自定义作业。pdb。