Debugging 从服务结构中单独运行Web应用程序

Debugging 从服务结构中单独运行Web应用程序,debugging,azure-service-fabric,visual-studio-debugging,Debugging,Azure Service Fabric,Visual Studio Debugging,我有服务结构和web服务。如果我从VisualStudio本地运行服务结构,我可以调试我的服务,这非常方便 但是,将代码更改部署到本地结构需要花费大量时间。 我确信应该有一个选项来单独启动我的服务。 似乎我需要更新我的方法“Main”,以便在dev环境中以不同的方式启动服务 您知道应该更改什么吗?您的服务是否使用了任何服务结构功能(远程处理?自定义侦听器?等) 如果是,则在没有service Fabric runtime的情况下无法运行服务 如果您的服务是通过WebHost配置的ASP.NET核

我有服务结构和web服务。如果我从VisualStudio本地运行服务结构,我可以调试我的服务,这非常方便

但是,将代码更改部署到本地结构需要花费大量时间。 我确信应该有一个选项来单独启动我的服务。 似乎我需要更新我的方法“Main”,以便在dev环境中以不同的方式启动服务


您知道应该更改什么吗?

您的服务是否使用了任何服务结构功能(远程处理?自定义侦听器?等)

如果,则在没有service Fabric runtime的情况下无法运行服务

如果您的服务是通过
WebHost
配置的ASP.NET核心服务,则可以尝试以下方法:

  • 将配置
    WebHost
    的代码分离到单独的静态方法中。使用此方法初始化
    WebHost
    内部服务结构服务
  • Program.Main
    中检查环境变量(这可以使用方法完成)

    此变量由服务结构运行时定义,因此,如果定义了此变量,则代码将在服务结构内运行

    如果定义了
    Fabric\u ApplicationName
    变量,则只需继续使用服务结构服务初始化代码,否则使用先前定义的静态方法初始化
    WebHost的实例
    ,并直接从
    程序.Main运行它

  • 我不确定这是否是你想要的,所以我想你还有其他问题-请提问


    希望能有所帮助。

    奥列格·卡拉西克的回答帮助形成了解决方案。 我还没有使用任何特定于Service Fabric的功能,所以它成功了

    我需要修改的唯一代码是类程序:

    using Microsoft.AspNetCore;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.ServiceFabric.Services.Runtime;
    using System;
    using System.Diagnostics;
    using System.Threading;
    
    namespace MyNameSpace
    {
        internal static class Program
        {
            private static void Main()
            {
                if (string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("Fabric_ApplicationName")))
                {
                    StartInIISExpress();
                }
                else
                {
                    StartInServiceFabric();
                }
            }
    
            private static void StartInIISExpress()
            {
                WebHost.CreateDefaultBuilder()
                        .UseStartup<Startup>()
                        .Build().Run();
            }
    
            private static void StartInServiceFabric()
            {
                < original code of the method Main >                   
            }
        }
    }
    
    使用Microsoft.AspNetCore;
    使用Microsoft.AspNetCore.Hosting;
    使用Microsoft.ServiceFabric.Services.Runtime;
    使用制度;
    使用系统诊断;
    使用系统线程;
    名称空间MyNameSpace
    {
    内部静态类程序
    {
    私有静态void Main()
    {
    if(string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(“Fabric_ApplicationName”))
    {
    startinisexpress();
    }
    其他的
    {
    StartInServiceFabric();
    }
    }
    专用静态无效StartIniSexpress()
    {
    WebHost.CreateDefaultBuilder()
    .UseStartup()
    .Build().Run();
    }
    私有静态void StartInServiceFabric()
    {
    
    }
    }
    }
    
    Hi friend,您的意思是要在visual studio中调试web服务而不使用service Fabric吗?如果是的话,我可以帮忙。如果我有任何误解,请随时纠正我:-)感谢分享解决方案,您可以将其标记为对simlar问题的成员有益的答案。