GVKun编程网logo

Swagger API 在部署到 IIS (.Net Framework) 后公开访问时返回 500 错误(swagger failed to load api definition)

35

本文将分享SwaggerAPI在部署到IIS(.NetFramework)后公开访问时返回500错误的详细内容,并且还将对swaggerfailedtoloadapidefinition进行详尽解释,

本文将分享Swagger API 在部署到 IIS (.Net Framework) 后公开访问时返回 500 错误的详细内容,并且还将对swagger failed to load api definition进行详尽解释,此外,我们还将为大家带来关于,NetFamework4.5.2 + 搭建带有 Token 验证的 Swagger、.Net Core Web API Swagger 没有找到该网址的网页:http://localhost/swagger、.net framework 3.5可以卸载吗?Win10卸载.net framework方法、.Net Framework 4.7或仅.Net Framework 2.0上的Winforms是否兼容Mono?的相关知识,希望对你有所帮助。

本文目录一览:

Swagger API 在部署到 IIS (.Net Framework) 后公开访问时返回 500 错误(swagger failed to load api definition)

Swagger API 在部署到 IIS (.Net Framework) 后公开访问时返回 500 错误(swagger failed to load api definition)

如何解决Swagger API 在部署到 IIS (.Net Framework) 后公开访问时返回 500 错误?

我是 Swagger UI 的新手,我对在 IIS 服务器中部署 API 项目没有太多想法。从服务器外部访问部署的 Swagger API 时出现以下错误。但是,如果我单击 IIS 中的“浏览”选项,它就可以正常工作。这个 Swagger API 是在 .Net Framework Api 项目中开发的(不是在 .Net Core 中)。

部署时是否需要添加任何配置?

页面返回以下错误消息:

{
   "Message":"An error has occurred.","ExceptionMessage":"value","ExceptionType":"System.ArgumentException","StackTrace":"   at System.UriBuilder.set_Scheme(String value)\r\n   at System.UriBuilder..ctor(String schemeName,String hostName)\r\n   at System.UriBuilder..ctor(String scheme,String host,Int32 portNumber)\r\n   at System.UriBuilder..ctor(String scheme,Int32 port,String pathValue)\r\n   at Swashbuckle.Application.SwaggerDocsConfig.DefaultRootUrlResolver(HttpRequestMessage request)\r\n   at Swashbuckle.Application.SwaggerUiHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)\r\n   at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)\r\n   at System.Web.Http.dispatcher.HttpRoutingdispatcher.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)\r\n   at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)\r\n   at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.<>n__FabricatedMethod3(HttpRequestMessage,CancellationToken )\r\n   at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.<SendAsync>d__0.MoveNext()\r\n--- End of stack trace from prevIoUs location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptiondispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   at System.Web.Http.HttpServer.<SendAsync>d__24.MoveNext()"
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

,NetFamework4.5.2 + 搭建带有 Token 验证的 Swagger

,NetFamework4.5.2 + 搭建带有 Token 验证的 Swagger

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

1、新建一个 webApi 项目,并引用 Swashbuckle,版本:5.6.0

 2、引用成功后,系统会自动生成一个 SwaggerConfig.cs 的文件,位于 App_Start 文件夹内,修改这个配置文件为:

using System.Web.Http;
using WebActivatorEx;
using Swashbuckle.Application;
using Swashbuckle.Swagger;
using System.Web.Http.Description;
using System.Collections.Generic;
using SwaggerSite;

[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]

namespace SwaggerSite
{
    public class SwaggerConfig
    {
        public static void Register()
        {
            var thisAssembly = typeof(SwaggerConfig).Assembly;

            GlobalConfiguration.Configuration
                .EnableSwagger(c =>
                {

                    c.SingleApiVersion("v1", "SwaggerSite");
                    c.IncludeXmlComments(string.Format("{0}/bin/SwaggerSite.XML", System.AppDomain.CurrentDomain.BaseDirectory));
                    c.OperationFilter<HttpAuthHeaderFilter>();

                })
                .EnableSwaggerUi(c =>
                {

                });
        }
    }
    public class HttpAuthHeaderFilter : IOperationFilter
    {
        public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
        {
            if (operation.parameters == null)
                operation.parameters = new List<Parameter>();

            operation.parameters.Add(new Parameter { name = "Authorization", @in = "header", description = "授权", required = false, type = "header" });

        }
    }
}

3、右键项目,选择属性 - 生成一栏,输出路径,XML 文档文件为:bin\SwaggerSite.xml

 4、修改 Api 控制器为:

/// <summary>
    /// 测试接口
    /// </summary>
    [RoutePrefix("api/Values")]
    public class ValuesController : ApiController
    {
        /// <summary>
        /// GET api/values
        /// </summary>
        /// <returns></returns>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        /// <summary>
        /// GET api/values/5
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public string Get(int id)
        {
            return "value";
        }

        /// <summary>
        /// POST api/values
        /// </summary>
        /// <param name="value"></param>
        public void Post([FromBody] string value)
        {
        }

        /// <summary>
        /// PUT api/values/5
        /// </summary>
        /// <param name="id"></param>
        /// <param name="value"></param>
        public void Put(int id, [FromBody] string value)
        {
        }

        /// <summary>
        /// DELETE api/values/5
        /// </summary>
        /// <param name="id"></param>
        public void Delete(int id)
        {
        }
    }
View Code

运行项目:https://localhost:44372/swagger

安全性方面,生成的 swagger 可以使用授权,关于授权,C# 这块可以使用 JWT+Token 验证。

关于 JWT 授权,可以参考大牛博客:JSON WEB TOKEN,简单谈谈 TOKEN 的使用及在 C# 中的实现

 纯属记录下,用到时,迅速搭建,万事大吉。

@天才卧龙的博客

.Net Core Web API Swagger 没有找到该网址的网页:http://localhost/swagger

.Net Core Web API Swagger 没有找到该网址的网页:http://localhost/swagger

如何解决.Net Core Web API Swagger 没有找到该网址的网页:http://localhost/swagger?

我正在研究 .NET 核心 Web API,我想将该项目与 Swagger 集成。

我已按照本文中的所有步骤进行操作 https://dev.to/amoenus/how-to-integrate-swagger-ui-in-a-net-core-web-api-application-amoenus-dev-13o1

现在该项目不在 IIS 上运行,所以为了导航到 swagger,我输入了 http://localhost:8080/swagger。

因为我在 StartUp

app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json","My API");
            c.RoutePrefix = string.Empty;
        });

老实说,我假设端口是 8080,因为我不知道我的端口是什么。

如果我不在 IIS 上运行,有人可以告诉我是否可以大摇大摆,以及如何准确知道我的本地主机端口?

解决方法

设置在 launchSettings.json 中,它位于 web api 根目录的 Properties 文件夹下。以下是我的设置示例。

"profiles": {
    "test-web-api": {
      "commandName": "Project","dotnetRunMessages": "true","launchBrowser": true,"launchUrl": "swagger","applicationUrl": "https://localhost:5001;http://localhost:5000","environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "local"
      }
    },"IIS Express": {
      "commandName": "IISExpress","environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "local"
      },"use64Bit": true
    }
  }

.net framework 3.5可以卸载吗?Win10卸载.net framework方法

.net framework 3.5可以卸载吗?Win10卸载.net framework方法

.net framework 3.5是系统自带的服务,如果有些软件打不开,就可能是电脑没有安装.net framework 3.5的缘故。那就有用户问了.net framework 3.5可以卸载吗?答案是不能卸载,只能关闭,下面就来看看关闭.net framework 3.5的教程。

操作如下:

1、打开开始菜单,然后点击控制面板。

2、在打开的控制面板中,找到程序和功能选项,并点击进入。

3、在跳转的界面中,点击左侧的启用或关闭windows功能。

4、之后找到net framework 3.5,并取消勾选。

5、然后点击下方的确定。

6、之后即可常规关闭net framework 3.5功能服务。

.Net Framework 4.7或仅.Net Framework 2.0上的Winforms是否兼容Mono?

.Net Framework 4.7或仅.Net Framework 2.0上的Winforms是否兼容Mono?

如何解决.Net Framework 4.7或仅.Net Framework 2.0上的Winforms是否兼容Mono??

根据此处的信息https://www.mono-project.com/docs/about-mono/compatibility/,Mono支持Winforms的最高版本(基于哪个.Net Framework)?我认为同一页面上这两个引用中的信息是矛盾的:

“描述Mono当前支持的最简单方法是: .NET 4.7中的所有内容(WPF,WWF除外),以及WCF受限和ASP.NET异步堆栈受限。”据我了解,WWF决定使用Windows Workflow Foundation,因此这意味着Winforms在.Net Frameork 4.7上由Mono支持。这应该很清楚。但是然后:

.NET 2.0复选标记:Winforms / System.Drawing 2.0 ”由于未提及在任何更高版本的.NET上实现的Winforms,这使我认为没有更高版本的Winforms。然后支持.Net Framework 2.0。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

关于Swagger API 在部署到 IIS (.Net Framework) 后公开访问时返回 500 错误swagger failed to load api definition的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于,NetFamework4.5.2 + 搭建带有 Token 验证的 Swagger、.Net Core Web API Swagger 没有找到该网址的网页:http://localhost/swagger、.net framework 3.5可以卸载吗?Win10卸载.net framework方法、.Net Framework 4.7或仅.Net Framework 2.0上的Winforms是否兼容Mono?的相关知识,请在本站寻找。

本文标签: