Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core ASP.NET核心在启动时解析url?_Asp.net Core_Swagger Ui_Urlhelper_Actioncontext - Fatal编程技术网

Asp.net core ASP.NET核心在启动时解析url?

Asp.net core ASP.NET核心在启动时解析url?,asp.net-core,swagger-ui,urlhelper,actioncontext,Asp.net Core,Swagger Ui,Urlhelper,Actioncontext,我想能够注册某些url的,考虑到资源的实际url。特别是:我的Web API文档的大摇大摆的终点 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { app.UseMvc(); app.UseSwagger(); app.UseSwaggerUi(c => { c.Swagger

我想能够注册某些url的,考虑到资源的实际url。特别是:我的Web API文档的大摇大摆的终点

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");
     });
}
在我的开发环境中,我将在上托管Web PI,在这种情况下,Swagger希望在此处与其端点对话:

在生产或登台环境中,Web API将作为Web应用程序托管在IIS中,类似于
https://test.contoso.com/TheGreatestWebAPI
和斯威格想谈谈:

…因此后者注释了终点注册

我想做的是使用以下内容:

c.SwaggerEndpoint($"~/swagger/v1/swagger.json", "API documentation");
任何使用过ASP.NET web表单的人都应该熟悉这一点,
Page.ResolveUrl()
,从我所看到的情况来看,相同的功能应该可以通过
UrlHelper.Content()
获得。但是,该函数需要UrlHelper类的实例,而相关构造函数需要ActionContext实例

我不知道在此上下文中如何正确实例化
UrlHelper
Startup.Configure()
中的
UseSwaggerUI()


-该方法的文档说明路径可以是完全限定的,也可以是相对于页面的

在我的例子中,只需删除路径的第一部分就足够了:

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

有点管用。删除前导“/swagger”和“/TheGreatestAPI/swagger”实际上会导致在
https://localhost:5000/swagger/v1/swagger.json
https://test.contoso.com/TheGreatestWebAPI/swagger/v1/swagger.json
。但是,
https://localhost:5000/swagger/index.html
尝试从
https://localhost:5001/swagger/index.html/v1/swagger.json
-它本质上是使用相对url扩展GUI文件名,而不是使用folder@SigurdGarshol我懂了。。我通常只转到
/swagger
,而不直接转到
/swagger/index.html
,但如果它在某些时候不起作用,它肯定不理想。您也可以只为站点的根添加一个配置值,并在配置swagger时传递该值。可能只是在我们现在使用的swagger版本中,但是/swagger会自动重定向到/swagger/index.html。所以我们在那里没有解决办法(