Как я могу получить данные из службы Scoped в Singleton Service?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу получить данные из службы Scoped в Singleton Service?

Сообщение Anonymous »

Мы столкнулись с проблемой в нашем приложении Blazor Server < /p>
  • Пользовательские журналы входит. < /li>
    Когда пользователь аутентифицирован показан список компаний. < /li>
    Пользователь может выбрать между одной из компаний в списке. < /li>
    В этот момент нам нужно сохранить CompanyDbname и компания выбранной компании (единственное место, которое мы обнаружили, чтобы хранить это было защищено >
    У нас есть MainService (должен быть служба Singleton, потому что он содержит другие данные, соответствующие приложению) со свойством dbconnectionstricing, которое хранит строку подключения без какого -либо начального каталога и метода getCompanyConnectionString (), который добавляет компанию в DBConnectionString и Method GetCompanyConnectionString Возвращает компанию adbConnetionString.
  • Строка компании используется на всех фабриках, которые работают с базой данных.
Проблема:

Мы не можем получить компанию в рамках метода getCompanyConnectionString (), потому что ProtectedSessionSessionStorage - это служба, а MainService - это Singleton Service. < /li> < /ul>
public class MainService
{
private readonly ProtectedSessionStorage _protectedSessionStorage;

public string DbConnectionString{ get; set; } = "Data Source=localhost\SQLEXPRESS;Initial Catalog=;Integrated Security=True";

public SessionDataService(ProtectedSessionStorage protectedSessionStorage)
{
// ***The Error Happens Here *** - in the Injection of ProtectedSessionStorage
_protectedSessionStorage = protectedSessionStorage;
}

async Task GetCompanyConnectionString()
{
// Get CompanyDbName from ProtectedSessionStorage
var companyDbName = await _protectedSessionStorage.GetAsync("UserDb");

// Add to CompanyDbName to DbConnectionString (that is common to all sessions)
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(DbConnectionString);
builder.InitialCatalog = companyDbName;

// returns ConnectionString that we use by A session in the DataBaseFactory calls
return builder.ToString();
}
}

< /code>
builder.Services.AddSingleton();


Подробнее здесь: https://stackoverflow.com/questions/794 ... on-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»