ASP.NET Core 2 - 使用IISExpress使用自定义域名和ssl进行开发

时间:2017-10-07 08:47:38

标签: asp.net-core asp.net-core-mvc asp.net-core-2.0

我希望能够使用自定义域和ssl而不是localhost在本地开发。

如何在VS Solution中设置自定义域+ ssl而不是localhost?

4 个答案:

答案 0 :(得分:4)

简单设置 - 使用服务器URL

如果要将服务器关联以使用分配给服务器/ Web主机的所有IP地址,则可以执行以下操作:

var host = new WebHostBuilder()
    .UseUrls("http://*:80", "http://localhost")
    .UseKestrel()
    .UseIISIntegration()
    .Build();

注意:如果您不想要所有IP地址,则可以从http://*更改为特定IP地址,例如http://111.111.111.111 。此外,端口不是必需的,但我已经使用它来完成答案。 同样重要的是要注意SSL不适用于 UseUrls

您可以在官方Microsoft文档中找到有关服务器网址here的大量其他详细信息。

绑定SSL认证(仅限红隼) - 端点配置

  

请注意,不建议通过Kestrel托管公共端点(即使使用SSL),您应该使用Nginx或IIS等反向代理。您可以从official Microsoft Docs here了解更多相关信息。

你没有提到你是否使用过Kestrel,但我认为你是......在这种情况下,你可以通过使用选项绑定套接字来轻松配置SSL证书。

以下是使用Listen方法使用TCP套接字的示例:

public static void Main(string[] args)
{
    BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .UseKestrel(options =>
        {
            options.Listen(IPAddress.Loopback, 5000);
            options.Listen(IPAddress.Loopback, 5001, listenOptions =>
            {
                listenOptions.UseHttps("testCert.pfx", "testPassword");
            });
        })
        .UseIISIntegration() // <-- don't forget you will need this for IIS!
        .Build();

注意:如果同时使用Listen方法和UseUrls,则Listen个端点会覆盖UseUrls个端点。

您可以在官方Microsoft文档中找到更多信息here

配置IISExpress

使用GUI
您可以右键单击该项目,然后单击[属性]。

enter image description here

使用launchSettings.json。
您必须使用launchSettings.json进行配置,您可以在此处找到:

launchSettings.json

"iisSettings": {
  "windowsAuthentication": false,
  "anonymousAuthentication": true,
  "iisExpress": {
    "applicationUrl": "http://localhost:61471/",
    "sslPort": 44360
  }
},
"profiles": {
  "IIS Express": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "launchUrl": "https://localhost:44360",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
}

配置IIS端点

如果您使用IIS,则IIS的URL绑定会覆盖您通过调用ListenUseUrls设置的所有绑定。有关详细信息,请参阅Introduction to ASP.NET Core Module

答案 1 :(得分:1)

如果您对浏览器(或您使用的任何客户端)中的证书验证错误感到满意,则可以在 hosts 文件中添加一个条目:

www.yourcustomdomain.com 127.0.0.1(如果您使用IPv6,则为::1

然后使用自定义域在本地访问您的网站。

在Windows中,hosts文件通常位于 C:\ Windows \ System32 \ drivers \ etc

答案 2 :(得分:1)

对于.net核心,要设置自定义域:

1)将域添加到hosts文件,例如www.yourapp.local

2)找到解决方案/.vs/applicationhost.config 添加绑定,例如:

{{1}}

3)在Web项目属性中>调试将App Url添加到“http://www.yourapp.local”51791 /“

(根据需要更换端口号)

对于SSL,我假设您可以将上述绑定和设置设置为https,并在网络应用程序属性中设置&gt;调试勾选“启用SSL”复选框。

也会看到这个答案:How to enable SSL for IIS Express in VS2015

答案 3 :(得分:0)

首先,在客户端的C:\Windows\System32\drivers\etc\hosts文本文件中添加一个条目。请遵循hosts文件本身中的说明。

“本地开发”是指在本地计算机还是本地网络上?如果是后者,则必须(以任何顺序)完成以下任务。

  • 按照here的方式生成并按照here的方式在服务器上配置证书,然后将其安装在客户端上。
  • 按照here所述配置防火墙以允许访问您的Web API。
  • 按照herehere所述,将您的Web API绑定到非localhost的URL。

我不确定是否可以立即使用,但是要使其与IIS Express一起使用,您可能还需要按照herehere所述运行netsh http add urlacl

上面的某些链接是特定于IIS Express的,因为这就是您所要的。如果使用Kestrel,则按以下步骤更改上述任务。

要在服务器上配置证书,请将其添加到appsettings.json

"Kestrel": {
    "Certificates": {
        "Default": {
            "Subject": "api.mycustomdomain.com",
            "Store": "My",
            "AllowInvalid": true
        }
    }
}

要将您的Web API绑定到非localhost的URL,请在launchSettings.json的Kestrel配置文件中,将localhost的值的applicationUrl部分替换为{{ 1}}。