ASP.NET Core:使用自定义基本URL和https在本地进行开发

时间:2019-03-30 16:23:08

标签: visual-studio asp.net-core

我正在使用ASP.NET Core。关于Stackoverflow的问题/答案已经与使用自定义URL进行开发有关,但是我的处境似乎有所不同,因为我需要https支持和自定义基本URL。我正在通过OAuth重定向流程与第三方进行授权。第三方仅支持https而不是localhost的重定向URL。 Visual Studio 2017(版本15.7.2)开箱即用,配置了https支持,这真是一个惊喜。默认情况下,我的应用程序在https://localhost:44348/上启动。

launchSettings.json看起来像这样:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:53837",
      "sslPort": 44348
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "MyProject.Web": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

我添加了一个主机条目,以将自定义网址映射到127.0.0.1

127.0.0.1       app.mysite.local

...但是我无法访问https://app.mysite.local:44348/上的网站。我收到Bad Request - Invalid Hostname错误。

我尝试将.vs/config/applicationhost.config中的此项从以下位置更改:

<binding protocol="https" bindingInformation="*:44348:localhost" />

<binding protocol="https" bindingInformation="*:44348:*" />

,但是即使我以管理员身份运行Visual Studio,我的应用程序也根本无法运行。 Visual Studio显示此对话框:

enter image description here

我什至尝试在UseUrls()上使用IWebHostBuilder扩展方法:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseUrls("https://*:44348/");
}

...但是这些技术似乎都不起作用。在开发ASP.NET Core应用程序时,谁能阐明如何在https上使用自定义基本URL?

1 个答案:

答案 0 :(得分:1)

已使用更新的url运行此文件,但缺少证书,这可能是接下来要查看的内容。当然,我知道这不是完整的答案,但是我认为最好提供一些帮助,因为我目前没有时间尝试通过证书问题。

尝试将.vs/config/applicationhost.config更改为以下内容(您需要将端口更新为您正在使用的端口),因此在我的配置中查看绑定注意事项后,我在两个地方进行了更新:

      <site name="WebSite1" id="1" serverAutoStart="true">
    <application path="/">
      <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
    </application>
    <bindings>
      <binding protocol="http" bindingInformation=":8080:localhost" />
      <binding protocol="https" bindingInformation="*:44335:app.mysite.local" />
    </bindings>
  </site>
  <site name="WebApplication2" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
      <virtualDirectory path="/" physicalPath="C:\Users\benl\source\repos\WebApplication2\WebApplication2" />
    </application>
    <bindings>
      <binding protocol="http" bindingInformation="*:63297:localhost" />
      <binding protocol="https" bindingInformation="*:44335:app.mysite.local" />
    </bindings>
  </site>

此外,我以管理员身份运行VS。我确实遇到过IIS错误,所以我做了重启。应用程序在本地主机URL上加载,并抱怨请求错误。现在,输入您的网址https://app.mysite.local:44335/(再次更改端口),它现在正在运行:

enter image description here

下一部分,您将需要为IIS express排序一个新证书,因为它很可能仅是为本地主机设置的。 Link to possibly how to do this

这也可能有用Link to cert creation / use for localdev