我在asp.net core 2.1中有一个webapi,如果我从Visual Studio中按F5键,则可以正常工作,可以打我的控制器,但是当我将该应用程序部署到IIS时,它表示可以解决该问题。 DbContext上的Configure方法。
我的Configure
看起来像这样
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IConfiguration configuration, DocumentDbContext documentContext)
{ …}
在我的ConfigureServices
上以这种方式注入dbcontext
container.AddDbContext<DocumentDbContext>(options => options.UseSqlServer(connectionString), ServiceLifetime.Scope);
正如我所说的那样。为了将应用程序部署到IIS,我在Program类上添加了以下信息
public class Program
{
public static void Main(string[] args)
{
var host = BuildWebHost(args);
host.Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
}
ApplicationPool在No Managed Code
下运行
我需要检查其他东西吗?
答案 0 :(得分:0)
该问题被识别为使用集成安全性的连接字符串,当Web应用程序在应用程序池标识下运行时,该集成字符串在部署为在IIS下运行时不起作用。由于应用程序池标识无权访问数据库,因此连接失败。
建议的解决方法是创建一个新的sql server登录名,将该用户分配给应用程序数据库,更新连接字符串以使用用户名和密码而不是集成安全性。