【问题标题】:ASP.NET Core resolve url in startup?ASP.NET Core 在启动时解析 url?
【发布时间】:2017-06-28 13:17:57
【问题描述】:

我希望能够注册某些考虑到资源实际 URL 的 URL。具体来说:我的 Web API 文档的 Swagger 端点。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseMvc();

     app.UseSwagger();
     app.UseSwaggerUi(c =>
     {
         c.SwaggerEndpoint($"/swagger/v1/swagger.json", "API documentation");
         //c.SwaggerEndpoint($"/TheGreatestWebAPI/swagger/v1/swagger.json", "API documentation");
     });
}

在我的开发环境中,我将在 http://localhost:5000 上托管 Web PI,在这种情况下,Swagger 想在这里与其端点对话:

http://localhost:5000/swagger/v1/swagger.json

在生产或暂存环境中,Web API 将作为 Web 应用程序托管在 IIS 中,地址类似于 https://test.contoso.com/TheGreatestWebAPI,并且 swagger 会想与此对话:

https://test.contoso.com/TheGreatestWebAPI/swagger/v1/swagger.json

...因此后者被注释掉的端点注册。

我想做的是使用这样的东西:

c.SwaggerEndpoint($"~/swagger/v1/swagger.json", "API documentation");

使用过 ASP.NET Web 表单Page.ResolveUrl() 的任何人都应该熟悉这一点,据我所知,同样的功能应该可以通过UrlHelper.Content() 获得。但是函数需要UrlHelper类的实例,而相关的构造函数需要ActionContext实例。

我不知道在这种情况下如何正确实例化UrlHelperStartup.Configure() 中的UseSwaggerUI())。

-S

【问题讨论】:

    标签: asp.net-core swagger-ui urlhelper actioncontext


    【解决方案1】:

    该方法的文档说路径可以是完全限定的或相对于页面。

    就我而言,只需删除路径的第一部分就足够了:

    c.SwaggerEndpoint("v1/swagger.json", "API documentation");
    

    【讨论】:

    • 那行得通,有点。删除前导的“/swagger”和“/TheGreatestAPI/swagger”实际上确实导致定义端点分别位于https://localhost:5000/swagger/v1/swagger.jsonhttps://test.contoso.com/TheGreatestWebAPI/swagger/v1/swagger.json。但是,https://localhost:5000/swagger/index.html 的标准 Swagger GUI 页面尝试从 https://localhost:5001/swagger/index.html/v1/swagger.json 加载 - 它实质上使用相对 url 而不是 文件夹跨度>
    • @SigurdGarshol 我明白了。我通常只去/swagger,而不直接去/swagger/index.html,但如果它有时不起作用,那肯定不是理想的。您也可以只为站点的根目录添加一个配置值,然后在配置 swagger 时将其传入。
    • 可能只是我们现在使用的swagger版本,但是/swagger会自动重定向到/swagger/index.html。因此,我们没有解决方法。 :(
    猜你喜欢
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多