Swagger Не удалось загрузить файл или сборку - PullRequest
0 голосов
/ 11 июня 2019

Работа над моим первым веб-API и использование Swagger для документации.Я обычно публикую свой веб-API локально, а затем перемещаю его в IIS.Внутри Visual Studio 2017 я опубликую API в виде файловой системы в папке с именем C: \ Опубликованные сайты \ APIName, и это то, что я сделал для этого API.Затем я создаю сайт в IIS и копирую все файлы поверх.

Когда я работаю с API на моем локальном компьютере, все работает, но как только я публикую локально, переместите его на мой сервер STAGE и попробуйте запустить полученный API, а также сообщение об ошибке «Не удалось загрузить файл или сборку» ион ссылается на «MyAPI.SwaggerConfig.Register () в C: \ TFS \ MyAPI \ WorkdayAPI \ App_Start \ SwaggerConfig.cs: 51», и это местоположение папки даже на сервере STAGE.

Я также заметил, что в папке Bin, в которой я публикую свои файлы, нет файла WorkdayAPI.xml, который Swagger использует для отображения сводки и комментариев.

Вот что у меня в файле SwaggerConfig:

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

            GlobalConfiguration.Configuration
                .EnableSwagger(c =>
                    {
                        c.ApiKey("Api-Token")
                            .Description("API Key for accessing secure APIs")
                            .Name("Api-Token")
                            .In("header");

                        c.SingleApiVersion("v1", "WorkdayAPI");
                        c.IncludeXmlComments(string.Format(@"{0}\bin\WorkdayApi.XML",
                           System.AppDomain.CurrentDomain.BaseDirectory));

                        // If you want the output Swagger docs to be indented properly, enable the "PrettyPrint" option.
                        c.PrettyPrint();

                    })
                .EnableSwaggerUi(c =>
                    {
                        // If your API supports ApiKey, you can override the default values.
                        // "apiKeyIn" can either be "query" or "header
                        c.EnableApiKeySupport("Api-Token", "header");
                    });
        }
    }

У кого-нибудь есть идеи, почему он ищет этот файл SwaggerConfig.cs?Я думал, что скомпилировано в MyAPI.dll?Любые предложения о том, что мне нужно сделать?

1 Ответ

1 голос
/ 12 июня 2019

Я думаю, что это проблема профиля сборки. Когда вы работаете на локальном компьютере, вы, вероятно, находитесь в режиме отладки, а при развертывании веб-API он, вероятно, находится в режиме выпуска.

Для Swagger, я полагаю, вы заходили в свойства своего проекта и проверяли опцию файла XML-документации на вкладке Build? Сделайте то же самое, выбрав сначала профиль выпуска в верхнем раскрывающемся списке. Поэтому, когда ваш Web API будет скомпилирован в режиме Release, будет сгенерирован XML-файл документа.

...