Как отладить запуск в Web Core API? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть веб-сайт MVC, использующий Web Core API.После внесения небольших изменений и развертывания я неожиданно получил ошибку;Код состояния ответа не указывает на успех: 500 (Внутренняя ошибка сервера).Поэтому я включил файл журнала для API Web Core (см. https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/troubleshoot?view=aspnetcore-2.0#aspnet-core-module-stdout-log) и получаю это сообщение об ошибке;

Исключение при запуске приложения: System.Collections.Generic.KeyNotFoundException: данный ключотсутствовал в словаре в System.Collections.Generic.Dictionary2.get_Item (ключ TKey) в Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.ComputeClassification (зависимость от строки) в Microsoft.AspNetCore.MisseserP.CandidateResolver.ComputeClassification (Строковая зависимость) в Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.ComputeClassification (Строковая зависимость) в Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartMol.d__172.MoveNext () в System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext () в Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager (IServiceCollection services) в Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore (IServiceCollection services) в Properties.API.Startup.ConfigureServices (IServiceCollection services) --- место, в котором ранее находился исключительный стекв System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices (IServiceCollection services) в Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices () в Microsoft (на) Microsoft.BuildApplication () Хостинговая среда: корневой путь промежуточного содержимого: C: \ inetpub \ wwwroot \ SIR Сейчас прослушивает: http://localhost:33007 Приложение запущено.Нажмите Ctrl + C, чтобы выключить.

ОБНОВЛЕНИЕ: линия, где он падает, является;

services.AddMvcCore (). AddJsonFormatters ();

в ConfigureServices.

Как мне отладить это, чтобы выяснить, что вызывает это?

public class Startup {
 public Startup(IHostingEnvironment env) {
  var builder = new ConfigurationBuilder()
   .SetBasePath(env.ContentRootPath)
   .AddJsonFile("appSettings.json", optional: false, reloadOnChange: true)
   .AddJsonFile($ "appSettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
   .AddEnvironmentVariables();

  Configuration = builder.Build();
 }

.
.
.

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors();
        services.AddMvcCore().AddJsonFormatters();
        services.Configure<IISOptions>(options => new IISOptions
        {
            AutomaticAuthentication = true,
            ForwardClientCertificate = false,
            ForwardWindowsAuthentication = false
        });
        var connectionStringMSurveyV2 = Configuration.GetConnectionString("MSurveyV2Db");
        services.AddScoped<MSurveyV2Db>(_ => new MSurveyV2Db(connectionStringMSurveyV2));
        var connectionStringSir = Configuration.GetConnectionString("SirDb");
        services.AddScoped<SirDb>(_ => new SirDb(connectionStringSir));
        services.AddScoped<IPropertiesRepo, PropertiesRepo>();
        services.AddScoped<ISirUoW, SirUoW>();
        services.AddScoped<IPropertyUoW, PropertyUoW>();
        services.AddScoped<Services.IMailService, Services.MailService>();
    }

.,,

1 Ответ

0 голосов
/ 31 мая 2018

Вы не сказали, какую версию ASP.NET Core вы используете.Если это 2.0+, вы можете настроить NLog в Program.cs для загрузки перед запуском:

public static class Program
{
    public static void Main(string[] args)
    {
        var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();

        try
        {
            var config = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("hosting.json", optional: true)
                    .Build();

            BuildWebHost(args, config).Run();
        }
        catch (System.Exception ex)
        {
            logger.Error(ex, "An error occurred during program startup");
            throw;
        }
    }

    private static IWebHost BuildWebHost(string[] args, IConfigurationRoot config)
    {
        return WebHost.CreateDefaultBuilder(args)
            .UseConfiguration(config)
            .UseStartup<Startup>()
            .UseNLog()
            .Build();
    }
}
...