当Web应用程序在.net Core(2.2)中作为服务运行时如何设置远程URL

时间:2019-04-16 05:07:46

标签: c# asp.net-core .net-core asp.net-core-2.2

我已经将.net core(2.2) Web应用程序部署为Windows服务,但无法从远程PC访问该应用程序。

应用程序在本地计算机上使用Url =“ http://localhost:5000”正常运行。

我在“ launchSettings.json”文件中指定了IP地址为Url =“ http://XXX.XXX.XX.XX:5000”,但无法从远程PC访问它。

出于测试目的,我已关闭防火墙设置,但没有任何作用。

Web应用程序部署环境:Windows7

现有源代码:

launchSetting.json

{
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:56032",
      "sslPort": 44324
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "TestApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Program.cs

public static void Main(string[] args)
{
    var isService = !(Debugger.IsAttached || args.Contains("--console"));
    if (isService)
    {
            var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
            var pathToContentRoot = Path.GetDirectoryName(pathToExe);
            Directory.SetCurrentDirectory(pathToContentRoot);
    }

    var builder = CreateWebHostBuilder(args.Where(arg => arg != "--console").ToArray());
    var host = builder.Build();

    if (isService)
        host.RunAsService();
    else
        host.Run();
}

预期结果: 能够从远程PC访问作为Web服务安装的.net核心Web应用程序。

2 个答案:

答案 0 :(得分:0)

您是否尝试使用高级安全性->入站规则->新规则->端口在Windows Defender防火墙中打开入站端口? Open port

答案 1 :(得分:0)

我必须在此处添加 UseUrls()

.ConfigureWebHostDefaults(webBuilder =>
{
    webBuilder.UseStartup<Startup>();
    // allow remote connections
    webBuilder.UseUrls("http://0.0.0.0:5000");
})

,并为Windows防火墙中的端口5000制定规则。