Swagger не работает есть какие-либо рекомендации? - PullRequest
0 голосов
/ 22 апреля 2019

Не работает Swagger Ui

500: {"Message": "Произошла ошибка.", "ExceptionMessage": "Недопустимый владелец типа для DynamicMethod.", "ExceptionType": "System.ArgumentException", "StackTrace": "at System.Reflection.Emit.DynamicMethod.Init (имя строки, атрибуты MethodAttributes, CallingConventions callConvention, тип returnType, тип [сигнатура], владелец типа, модуль m, логическое значение skipVisibility, логическое значение transparentMethod, StackCrawlMark & ​​stackMark \).r \ n в System.Reflection.Emit.DynamicMethod..ctor (имя строки, тип returnType, Type [] parameterTypes, владелец типа, логическое значение skipVisibility) \ r \ n в Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory.CreateDynamicMethod (имя строки,Тип returnType, Type [] parameterTypes, Тип владельца) \ r \ n в Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory.CreateDefaultConstructor [T] (Тип type) \ r \ n в Newtonsoft.Json.Serialization.DefaultContractResolver.GetDefaultTreator ()\ r \ n в Newtonsoft.Json.Serialization.DefaultContractResolver.InitializeContract (контракт JsonContract) \ r \ n в Newtonsoft.Json.Serialization.DefaultContractResolver.CreateArrayContract (Тип objectType) \ r \ n в Newtonsoft.Json.Serialization.DefaultContractResolver.CreateTyperact). TypeJson.Serialization.DefaultContractResolver.ResolveContract (Тип тип) \ r \ n в Swashbuckle.Swagger.SchemaRegistry.CreateInlineSchema (Тип тип) \ r \ n в Swashbuckle.Swagger.SchemaRegistry.GetOrRegckle в типе (тип)Swagger.SwaggerGenerator.CreateParameter (расположение строки, ApiParameterDescription paramDesc, schemaRegistry schemaRegistry) \ r \ n в Swashbuckle.Swagger.SwaggerGenerator. <> C__DisplayClass12.b__ * * переменная_перечисляемого класса1..ctor (источник IEnumerable 1 collection)\r\n at System.Linq.Enumerable.ToList[TSource](IEnumerable 1) \ r \ n в Swashbuckle.Swagger.SwaggerGenerator.CreateOperation (ApiDescription apiDesc, схема SchemaRegistry SchemaRegistry) \ r \ n в Swashbuckle.Swagger.SwaggerGenerator.Ctemumerable 1 apiDescriptions, SchemaRegistry schemaRegistry)\r\n at Swashbuckle.Swagger.SwaggerGenerator.<>c__DisplayClass7.<GetSwagger>b__4(IGrouping 2 группа) \ r \ n в System.Linq.Enumerable.ToDictionary [TSource, TKey, TElement] (IEnumerable 1 source, Func 2 keySelector, функция Func 2 elementSelector, IEqualityComparer 1) \ r \ n в Swashbuckle.Swagger.SwaggerGenerator.GetSwagger (String rootUrl, String apiVersion) \ r \ n в Swashbuckle.Application.\ r \ n в System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync (запрос HttpRequestMessage, CancellationToken cancellationToken) \ r \ n в System.Net.Http.DelegatingHandler.SendAsync (запрос HttpRequestTessation \ nensen при отмене запроса \ отмены).Web.Http.HttpServer.d__0.MoveNext () "} http://localhost:5352/swagger/docs/v1

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Когда я получил эту ошибку, это произошло потому, что в моем определении ResponseType (WebApi) была ошибка / упущение. Компилятор был в порядке с этим, но Swagger не был.

Ошибка

[ResponseType(typeof(IEnumerable<>))]

Работала

[ResponseType(typeof(IEnumerable<string>))]
0 голосов
/ 24 апреля 2019

У меня есть базовый класс всех контроллеров, и это проблема.

Я исправил использование этого решения.

[ApiExplorerSettings (IgnoreApi = true)] решил мою проблему, спасибо.Как примечание для тех, кому это может понадобитьсяЕсли вы поместите это на сам базовый контроллер, он скроет все дочерние контроллеры (не очень хорошо), но если вы добавите его в свойства / методы, он будет правильно показывать дочерние контроллеры.

...