【问题标题】:Api using subdomain instead of the full website urlApi 使用子域而不是完整的网站 url
【发布时间】:2020-07-05 09:41:24
【问题描述】:

希望有人可以帮助我解决我的问题。

我有一个在 asp.net core 3 下运行的 api,它可以通过 https://SOMEDOMAINNAME/api/myapifunction 进行访问

是否可以在 IIS 下或者通过项目 startup.cs 中的设置,使用以下 url 访问:-

https://api.SOMEDOMAINNAME/myapifunction

提前致谢

博士

【问题讨论】:

  • 你有想过这个吗?

标签: asp.net-core iis asp.net-web-api asp.net-mvc-routing


【解决方案1】:

我建议您可以尝试使用 IIS url rewrite 功能来帮助您实现此要求。

它会将url从https://api.SOMEDOMAINNAME/myapifunction重写为https://SOMEDOMAINNAME/api/myapifunction

更多安装方法,可以参考article

安装后,您可以将以下配置设置添加到您的 web.config 文件中。

<rewrite>
    <rules>
            <rule name="RewriteRule">
                <match url=".*" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^api.SOMEDOMAINNAME" />
                </conditions>
                <action type="Rewrite" url="https://SOMEDOMAINNAME/api/{R:0}" />
            </rule>
    </rules>
</rewrite>

【讨论】:

    【解决方案2】:

    IMO,您需要做的是在 IIS 中的子域下部署您的 Web API,而不是使用 TL 域作为基本 URL。

    在 IIS 中执行此操作后,对您的 API 控制器进行以下更改:

    代替

          [Route("api/[controller]"), ApiController]
          public class ControllerName : ControllerBase
          {
    
          }
    

    这给了你 https://SOMEDOMAINNAME/api/myapifunction

    你应该这样做

      [Route("[controller]"), ApiController]
      public class ControllerName : ControllerBase
      {
    
      }
    

    你有这个https://api.SOMEDOMAINNAME/myapifunction

    【讨论】:

      猜你喜欢
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多