Исключение нулевой ссылки на конструкторе - PullRequest
0 голосов
/ 16 октября 2018

Я использую стандартный проект .net в другом стандартном проекте .net.Я упаковал его как пакет nuget и включил dll в свой проект.Когда мой проект вызывает dll для выполнения какой-либо работы, он сначала сообщает объект

var account = new Data.Account();

, где класс Account выглядит следующим образом:

internal class Account : Base
{
    const string NAME = "test";

    internal Account() { }
}

А базовый класс выглядит так:затем:

public abstract class Base
{
    protected string connectionString;

    public Base()
    {
        connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
    }
}

Однако, когда он пытается создать новый класс, он выдает исключение:

   at xxx.xx.Data.Base..ctor() in xxx\xxx\Data\Base.cs:line 11 

Где строка 11 - просто public Base() конструктор

Я включил pdb в файл nuspec, чтобы я мог отлаживать в dll, но это не дает никакого дополнительного контекста или трассировки.Я начинаю думать, что это либо связано с тем, что классы являются внутренними, либо не находит ключ строки подключения в app.config в dll, это то, что я сейчас изучаю в Интернете.

1 Ответ

0 голосов
/ 16 октября 2018
  1. Если вы хотите использовать System.Configuration.ConfigurationManager в приложении .NET Core 2.0, вам нужно добавить App.config в проект (в вашем случае проект ASP.NET Core WebApi) с соответствующими разделами конфигурации.,
  2. При чтении параметров конфигурации вы должны проверять наличие нуля, чтобы вы могли корректно обработать его с помощью более значимого сообщения об ошибке, например,

    var connectionString = System.Configuration.ConfigurationManager
        .ConnectionStrings["connectionstring"]?.ConnectionString;
    if (connectionString == null)
    {
         throw new ConfigurationErrorsException(
            "ConnectionString 'connectionString' not found in application configuration file"
            );
    }
    
...