我希望能够使用自定义域和ssl而不是localhost在本地开发。
如何在VS Solution中设置自定义域+ ssl而不是localhost?
答案 0 :(得分:4)
如果要将服务器关联以使用分配给服务器/ 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的大量其他详细信息。
请注意,不建议通过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。
使用GUI
您可以右键单击该项目,然后单击[属性]。
使用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的URL绑定会覆盖您通过调用Listen
或UseUrls
设置的所有绑定。有关详细信息,请参阅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”复选框。
答案 3 :(得分:0)
首先,在客户端的C:\Windows\System32\drivers\etc\hosts
文本文件中添加一个条目。请遵循hosts
文件本身中的说明。
“本地开发”是指在本地计算机还是本地网络上?如果是后者,则必须(以任何顺序)完成以下任务。
localhost
的URL。我不确定是否可以立即使用,但是要使其与IIS Express一起使用,您可能还需要按照here和here所述运行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}}。