首页 > 解决方案 > 这个类定义有什么问题?(相关:SwaggerDefaultValues.cs)

问题描述

我创建了如下所示的类。我的项目中有类似的类,除了这个之外,它们都不会导致错误。我在我的类中找不到任何问题,但它会导致异常,在我的描述变量中,ModelMetadata属性为 null,这会导致错误。

这就是在我的 SwaggerDefaultValues.cs 中定义 描述变量的方式

var description = context.ApiDescription.ParameterDescriptions.First(p => p.Name == parameter.Name);

它在这里抛出异常,ModelMetadata 为 null,这导致 System.NullReferenceException:

parameter.Description = description.ModelMetadata.Description;

(详情请看截图……)

当我跟踪我的代码时,这个类定义会导致问题,

CardPlusCNumberUpdateQueryParameter 类:

using System;
using System.ComponentModel.DataAnnotations;

namespace WestCore.AppCore.Services.PCsbins.Customer
{
    public class CardPlusCNumberUpdateQueryParameter
    {
        /// <summary>
        /// Customer Number
        /// </summary>
        [Range(1, 999999)]
        [Required]
        public int CustomerNumber { get; set; }


        /// <summary>
        /// CardPlus Customer Number
        /// </summary>
        [Required]
        public string CardPlusCustomerNumber { get; set; }
    }
}

堆栈跟踪:

at WestCore.Api.Swagger.SwaggerDefaultValues.Apply(Operation operation, OperationFilterContext context) in C:\Users\can.pahali\source\WestCoreApiSS\Main\WestCore.Api\Swagger\SwaggerDefaultValues.cs:line 38
       at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.CreateOperation(ApiDescription apiDescription, ISchemaRegistry schemaRegistry)
       at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.CreatePathItem(IEnumerable`1 apiDescriptions, ISchemaRegistry schemaRegistry)
       at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.<>c__DisplayClass6_0.<CreatePathItems>b__2(IGrouping`2 group)
       at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
       at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector)
       at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.CreatePathItems(IEnumerable`1 apiDescriptions, ISchemaRegistry schemaRegistry)
       at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwagger(String documentName, String host, String basePath, String[] schemes)
       at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)

更新:我还为 context.ApiDescription.ParameterDescriptions 对象添加了屏幕截图。

context.ApiDescription.ParameterDescriptions 视图

见抛出异常

标签: c#.net-coreswagger

解决方案


推荐阅读