Я и моя команда работаем над проектом, который представляет собой веб-приложение NETCore 2.1 MVC, в Visual Studio 2017, и у этого проекта есть база данных MSSQL.У меня нет проблем с доступом к этой базе данных, однако мои коллеги получают следующее исключение:
SqlException: Невозможно открыть базу данных "MSSQL_DB", запрошенную при входе в систему.Ошибка входа.Не удалось войти в систему для пользователя 'DESKTOP-machinename \ windowsLogin'.
После изучения проблемы в Интернете я вижу, что в большинстве случаев проблема заключается в том, что ASP.NET не настроен для использования проверки подлинности Windows.Кроме того, я внес следующие изменения, но проблема остается прежней.
Добавлен файл web.config в проект:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authentication mode="Windows"/>
</system.web>
</configuration>
Изменил appsettings.json, добавив Integrated Security = False:
"ConnectionStrings": {
"DbConnection": "Server=(localdb)\\mssqllocaldb;Database=MSSQL_DB;Integrated Security=False;Trusted_Connection=True;MultipleActiveResultSets=true"
launchsetings.json:
{
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost:43064",
"sslPort": 44395
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"NETCore2IdentityWebApp_v3": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}
Также стоит упомянуть, что в конце метода Configure есть метод, который проверяет, есть ли какие-либо роли пользователей, добавленные в таблицу ролей, и, если нет, добавляет их.Всякий раз, когда происходит исключение, это происходит в строке, где мы выполняем этот метод.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider servpro)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseDefaultFiles();
app.UseCookiePolicy();
app.UseSession();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "searchresults",
template: "searchresults",
defaults: new { controller = "SearchResults", action = "SearchResults" });
routes.MapRoute(
name: "hotel",
template: "hotel",
defaults: new { controller = "Hotel", action = "Hotel" });
routes.MapRoute(
name: "hotels",
template: "hotels",
defaults: new { controller = "Hotels", action = "Hotels" });
routes.MapRoute(
name: "contact",
template: "contact",
defaults: new { controller = "Contact", action = "Contact" });
routes.MapRoute(
name: "booking",
template: "booking",
defaults: new { controller = "Booking", action = "Booking" });
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
InitRoles.CreateRoles(servpro).Wait(); //Exception happens here
}
И класс InitRoles
:
public class InitRoles
{
public static async Task CreateRoles(IServiceProvider serviceProvider)
{
var RoleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
var UserManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
string[] roleNames = { "Admin", "Standard" };
IdentityResult roleResult;
foreach (var roleName in roleNames)
{
var roleExist = await RoleManager.RoleExistsAsync(roleName);
if (!roleExist)
{
//create the roles and seed them to the database: Question 1
roleResult = await RoleManager.CreateAsync(new IdentityRole(roleName));
}
}
}
}
Дайте мне знать, требуется ли какая-либо другая информация,