Tôi có một ứng dụng web mà tôi đã tạo bằng cách sử dụng Mã khung thực thể đầu tiên. Khi thiết lập nó, tôi đã quản lý để kết hợp chuỗi kết nối DB của mình với DBContext bằng cách chỉ định không gian tên đầy đủ và lớp của DBContext làm tên của chuỗi kết nối.Mã khung thực thể Đầu tiên bỏ qua chuỗi kết nối, sử dụng IIS thay vì
<add name="MyClassProject.EfDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDatabase;Integrated Security=true;User Id=MyUsername;Password=MyPassword;" providerName="System.Data.SqlClient"/>
Ban đầu khi tôi thiết lập dự án, tôi vừa tạo nó trong c: \ inetpub \ wwwroot và chỉ chạy nó qua Visual Studio. Mọi thứ đều ổn.
Bây giờ tôi đang cố gắng để có mã xây dựng vào một thư mục trang web riêng biệt và có trang web chạy dưới dạng trang web và ứng dụng riêng trong IIS. Tôi đã thiết lập trang web và tệp máy chủ của mình nhưng khi tôi chạy nó, tôi đã nhận được lỗi sau.
Không thể mở cơ sở dữ liệu "MyDatabase" do thông tin đăng nhập yêu cầu. Đăng nhập thất bại.
Đăng nhập không thành công cho người dùng 'IIS APPPOOL \ MyAppPool'.
Tôi tự hỏi tại sao điều này xảy ra, vì dường như tôi đang chỉ định tên người dùng và mật khẩu bảo mật để sử dụng cho DB trong chuỗi kết nối của mình .... vậy tại sao lại cố gắng kết nối với ứng dụng trang web của tôi đang hoạt động?
Ngoài ra, làm thế nào tôi có thể sửa lỗi này, mà không cần phải cung cấp cho MyAppPool (hoặc dịch vụ mạng nếu tôi thay đổi nó để đó) DB quyền trong SQL Server?
Cập nhật: tôi nên đã nói rằng tôi khởi lớp DBContext tôi sử dụng:
namespace MyClassProject
{
public class EfDbContext : DbContext
{
public EfDbContext() : base ("MyDatabase")
{
}
}
}
Tôi đã xóa thuộc tính đó khỏi chuỗi kết nối nhưng vẫn gặp sự cố tương tự. Tôi thậm chí đã cố gắng thiết lập một cách rõ ràng Integrated Security = false; nhưng điều đó cũng không hiệu quả. –
@SeanHolmesby bạn có chắc chắn sử dụng chuỗi kết nối đó không? –
Khi tôi chạy qua Visual Studio (khi nó hoạt động) nó chắc chắn thêm dữ liệu vào cơ sở dữ liệu mà tôi đang cố gắng tham khảo. tôi có: - namespace MyClassProject { public class EfDbContext: DbContext { EfDbContext công cộng() : cơ sở ("MyDatabase") {} }} ...... Và sau đó ...... connectionStrings> –