Đăng nhập thất bại cho người dùng 'IIS APPPOOL \ ASP.NET v4.0'


430

Tôi có một dự án web (C # Asp.Net, EF 4, MS SQL 2008 và IIS 7) và tôi cần di chuyển nó sang IIS 7 cục bộ (hiện tại hoạt động tốt với CASSINI).

Tại địa phương trong IIS tôi có Default Web Sitetriển khai của tôi. Cả triển khai của tôi và Default Web Siteđang ở trên pool ASP.NET v4.0 (tìm hình ảnh để cài đặt) khung mục tiêu nhóm 4 như dự án web của tôi. Cài đặt bể bơi Khi truy cập trang web, trình duyệt không hiển thị trang và cho phép trình duyệt tải xuống trang thay thế.

Tôi có các dự án khác đang chạy trên IIS cục bộ và chúng hoạt động không có vấn đề gì (nhưng chúng không sử dụng Entity Framework).

Sử dụng Trình ghi sự kiện tôi thấy các lỗi như dưới đây:

Exception information: 
    Exception type: EntityException 
    Exception message: The underlying provider failed on Open.
   at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)


    Login failed for user 'IIS APPPOOL\ASP.NET v4.0'.
       at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       at System.Data.SqlClient.SqlConnection.Open()
       at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)

Câu hỏi liên quan

CẬP NHẬT: Bạn có thể đọc trong các tài nguyên về câu hỏi này rằng các quyền phải được cấp trên MS SQL 2008 theo cách thủ công như giải thích trong câu trả lời của anh ấy. Sử dụng IIS 7.5 và MS SQL 2008 R2, không cần thiết phải cho phép thủ công.


2
Bạn đã cho phép quyền nhận dạng nhóm ứng dụng trên thư mục trang web chưa?
Christian

Tôi không chắc chắn, bạn có thể vui lòng cho tôi biết làm thế nào để làm điều đó?
GibboK


Trên thực tế, như adrift nói, đây có thể là một vấn đề bảo mật sql. Bạn tốt nhất nên đặt tài khoản Người dùng NT cho AppPool và sau đó cấp quyền đó cho thư mục trang web và cho các bảng thích hợp trong SQL
Christian

1
@GibboK: Tôi sẽ khuyến khích bạn xem lại câu trả lời được chấp nhận ở đây và chọn một câu trả lời phù hợp hơn. Câu trả lời được chấp nhận đang dẫn nhiều người vào một lỗ đen an ninh. Có nó hoạt động. Không, nó thực sự không phải là một ý tưởng tốt. Xem những bình luận của tôi bên dưới.
tiêu

Câu trả lời:


594

Có vẻ như không thể mở kết nối đến SQL Server.

Bạn cần thêm thông tin đăng nhập vào SQL Server IIS APPPOOL\ASP.NET v4.0và cấp quyền cho cơ sở dữ liệu.

Trong SSMS, bên dưới máy chủ, mở rộng Bảo mật, sau đó nhấp chuột phải vào Đăng nhập và chọn "Đăng nhập mới ...".

Trong hộp thoại Đăng nhập mới, nhập nhóm ứng dụng làm tên đăng nhập và nhấp vào "OK".

nhập mô tả hình ảnh ở đây

Sau đó, bạn có thể nhấp chuột phải vào thông tin đăng nhập cho nhóm ứng dụng, chọn Thuộc tính và chọn "Ánh xạ người dùng". Kiểm tra cơ sở dữ liệu thích hợp, và các vai trò thích hợp. Tôi nghĩ bạn chỉ có thể chọn db_datareaderdb_datawriter, nhưng tôi nghĩ bạn vẫn cần cấp quyền để thực thi các thủ tục được lưu trữ nếu bạn thực hiện điều đó thông qua EF. Bạn có thể kiểm tra các chi tiết cho các vai trò ở đây .


8
cảm ơn, tôi đã làm những gì bạn buồn, bây giờ tôi nhận được lỗi này: Không thể mở cơ sở dữ liệu "SiteNameExtension" theo yêu cầu đăng nhập. Việc đăng nhập thất bại. Đăng nhập thất bại cho người dùng 'IIS APPPOOL \ DefaultAppPool'.
GibboK

76
RẤT QUAN TRỌNG: KHÔNG NHẤP VÀO TÌM KIẾM ĐỂ XÁC NHẬN ĐĂNG KÝ! Nó sẽ không nhận ra nó nhưng nó sẽ hoạt động. Chỉ cần nhập nó dưới dạng IIS APPPOOL \ SimonsAppPoolName. Xem stackoverflow.com/questions/1933134
Simon_Weaver

6
Thay vào đó, tốt hơn là thay đổi 'Danh tính' thành 'LocalSystem' từ IIS, như được mô tả trong câu trả lời tiếp theo.
Altaf Patel

Điều này có thể hoạt động khi phiên bản máy chủ SQL của bạn ở trên một máy chủ khác sau đó là máy chủ IIS của bạn không? Bởi vì tôi cần sửa cùng một vấn đề, nhưng SQL và IIS không nằm trên cùng một máy. Vì vậy, sử dụng Windows xác thực cho người dùng mới đó sẽ không hoạt động
Segers-Ian

5
Đối với tôi, người dùng cần thêm là 'IIS APPPOOL \ DefaultAppPool'. Sau đó, nó làm việc.
Marcel

341

Bạn có thể thay đổi ApplicationPoolIdentity từ IIS7 -> Nhóm ứng dụng -> Cài đặt nâng cao. Cài đặt nâng cao

Trong ApplicationPoolIdentity, bạn sẽ tìm thấy hệ thống cục bộ. Điều này sẽ làm cho ứng dụng của bạn chạy theo NT AUTHORITY\SYSTEM, đó là một thông tin đăng nhập hiện có cho cơ sở dữ liệu theo mặc định.

Chỉnh sửa: Trước khi áp dụng đề xuất này, bạn nên lưu ý và hiểu ý nghĩa bảo mật.


51
@GibboK, Nếu bạn lo ngại về bảo mật, đừng làm điều này. Xem technet.microsoft.com/en-us/l Library / dd378907 (v = WS.10) .aspx
Jeff Ogata

4
Ngoài việc chạy nhóm ứng dụng dưới dạng danh tính LocalSystem, tôi cũng phải ánh xạ người dùng "NT AUTHORITY \ HỆ THỐNG" sang các vai trò cơ sở dữ liệu
Phil

31
Cái này thật kinh tởm. Cấp quyền cho HỆ THỐNG cho một ứng dụng web là một công thức cho thảm họa và cho phép các hành vi sai trái đủ mọi cơ hội để gây ra sự xấu cho không chỉ ứng dụng web của bạn, mà toàn bộ máy chủ lưu trữ. Chỉ vì DB chấp nhận đăng nhập từ HỆ THỐNG không có nghĩa là bạn nên chạy ứng dụng web của mình dưới dạng HỆ THỐNG. Máy tính để bàn windows thậm chí sẽ không cho phép bạn chạy dưới dạng HỆ THỐNG (không nhảy qua vòng). Chạy một ứng dụng web với quyền này là một ý tưởng thực sự, thực sự ngu ngốc. Bạn nên làm cho DB chấp nhận danh tính apppool hiện tại. Tôi sẽ -100 nếu tôi có thể. -1.
tiêu

8
HỆ THỐNG được đặc quyền cao hơn Quản trị viên. Bạn KHÔNG BAO GIỜ nên chạy máy chủ web của mình với bất kỳ thứ gì đạt đến mức đó.
sên

1
Tôi chỉ làm cho tài khoản Khách là thành viên của nhóm Quản trị viên. Đơn giản, sạch sẽ, không bao giờ có bất kỳ vấn đề với nhảm nhí bảo mật.

29

đảm bảo bạn có ...

Trusted_Connection=false;

trong chuỗi kết nối của bạn


7
Có Trusted_Connection = true trong chuỗi kết nối sẽ ghi đè các giá trị xác thực SQL bằng hồ sơ người dùng IIS Nhận dạng.
Jeff the Bear

2
trong trường hợp của tôi loại bỏ: Tích hợp bảo mật = Đúng từ chuỗi kết nối đã sửa nó.
Carlos R Balebona

Đã làm cho tôi. Đã lưu ngày @JefftheBear
D_Edet

26

Tôi đã giải quyết vấn đề này bằng cách sử dụng sql như hình ảnh sau đây.

Nhấp chuột phải vào db-> thuộc tính -> quyền -> Xem quyền Máy chủ -> sau đó chọn IIS APPPOOL\ASP.NET v4.0và cấp quyền.

db


Có phải quy trình (và hình ảnh) ở trên mà bạn đang mô tả quyền GRANTing Server Level cho Nhận dạng nhóm ứng dụng đó không? Nghe có vẻ không phải là một ý tưởng tốt.
Chris Walsh

2
Người dùng này xứng đáng với huy chương! Không có gì giúp được nhưng điều này!
Khateeb321

2
@ Khateeb321 hoàn toàn, cảm ơn bạn rất nhiều DevT cho câu trả lời của bạn.
Azxdreuwa

22

Chạy tập lệnh sql này

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [WebDatabaseUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'WebDatabaseUser'
GO

Cảm ơn, cách dễ nhất;) +1
Zolfaghari

11

Nếu trong chuỗi kết nối bạn đã chỉ định:

User ID=xxx;Password=yyy

nhưng trong chuỗi kết nối có:

Trusted_Connection=true;

SQL Server sẽ sử dụng Xác thực Windows, do đó, các giá trị kết nối của bạn sẽ bị bỏ qua và ghi đè (IIS sẽ sử dụng tài khoản Windows được chỉ định trong hồ sơ người dùng Danh tính). thêm thông tin ở đây

Áp dụng tương tự nếu trong chuỗi kết nối có:

 Integrated Security = true;

hoặc là

 Integrated Security = SSPI;

bởi vì Windows xác thực sẽ được sử dụng để kết nối với máy chủ cơ sở dữ liệu. thêm thông tin ở đây


10

đi tới iis -> nhóm ứng dụng -> tìm nhóm ứng dụng của bạn được sử dụng trong ứng dụng

nhập mô tả hình ảnh ở đây

chọn nhóm ứng dụng của bạn được sử dụng cho ứng dụng, nhấp chuột phải vào cài đặt nâng cao

nhập mô tả hình ảnh ở đây

Chọn danh tính nhóm ứng dụng nhập mô tả hình ảnh ở đây

chọn tích hợp làm Hệ thống cục bộ và nhấp vào ok


7

Tôi ghét ApplicationPoolIdentity. Tôi luôn đặt Tài khoản người dùng Windows làm tài khoản trên AppPool.

Như adrift nói, nó có vẻ như là một vấn đề bảo mật cơ sở dữ liệu. Vì vậy, hãy tạo một tài khoản người dùng NT, gán nó cho ASP.NET v4.0 AppPool và sau đó cấp quyền cho thư mục trang web và cho (các) bảng có liên quan trong SQL.


xin lỗi, không biết làm thế nào để làm điều đó, bạn có thể chỉ cho tôi một hướng dẫn không? cảm ơn sự giúp đỡ của bạn về điều này
GibboK

2
Đừng làm điều này, có một lý do IIS đã thay đổi danh tính nhóm ứng dụng, learn.iis.net/page.aspx/624/application-pool-identities
Julien Lebot

@ LeSnip3R liên kết bị phá vỡ
Adaptabi

6

Không sử dụng Bảo mật tích hợp. Sử dụngUser Id=yourUser; pwd=yourPwd;

Điều này giải quyết vấn đề.


4

Tôi gặp vấn đề này và nó thực sự gây ra bởi một thứ khác - tôi đã có người dùng 'IIS APPPOOL \ ASP.NET v4.0' trong cơ sở dữ liệu của mình nhưng nó vẫn không hoạt động.

Gần đây tôi đã nâng cấp Cài đặt máy chủ SQL của mình và trong quá trình Người dùng bị ngắt kết nối với Đăng nhập - do đó, có 'IIS APPPOOL \ ASP.NET v4.0' trong Cơ sở dữ liệu -> Bảo mật -> Người dùng NHƯNG không có Người dùng nào không thuộc Bảo mật -> Đăng nhập.

Thêm đăng nhập 'IIS AppPool \ ASP.NET v4.0' để Security -> Logins, SQL Server tự động ánh xạ nó vào người dùng trong cơ sở dữ liệu (điều này thường phải được thực hiện bằng tay) và vấn đề cố định.


1
chỉ để thêm ... ở phía bên trái, dưới Quyền ... đánh dấu db_writer và db_reader; và chọn cơ sở dữ liệu mà sẽ sử dụng những điều khoản.
benjieb

4

Điều đầu tiên bạn cần xóa nếu bạn đang sử dụng cửa sổ xác thực và bạn không nhắc đến bất kỳ mật khẩu Tên truy nhập trong chuỗi kết nối của bạn sau đó:

Điều gì xảy ra khi bạn chạy mã của mình qua localhost: khi bạn chạy ứng dụng khách kiểm tra wcf của mình từ localhost, nó sẽ có thể giao tiếp với cơ sở dữ liệu vì ứng dụng chế độ gỡ lỗi cục bộ đang gọi cơ sở dữ liệu bằng dịch vụ của tài khoản của bạn. Vì vậy, nó có quyền truy cập vào cơ sở dữ liệu vì devenv.exe đang chạy trong tài khoản người dùng của bạn.

Nhưng khi bạn triển khai dịch vụ web của bạn trong IIS. Bây giờ hãy hiểu dịch vụ này chạy trong IIS không thuộc tài khoản của bạn. Vì vậy, bạn cần gán quyền truy cập cho dịch vụ IIS để truy cập máy chủ sql để xác thực windows. Tại đây, dịch vụ web của bạn sẽ không thể liên lạc với máy chủ SQL vì vấn đề quyền truy cập và Đăng nhập thất bại cho người dùng ____ (ở đây người dùng của bạn sẽ đến)

Vì vậy, nếu bạn đang sử dụng xác thực windows để kết nối cơ sở dữ liệu của mình, bạn chỉ cần thay đổi cài đặt nhóm Ứng dụng IIS. Bạn cần thay đổi danh tính nhóm ứng dụng IIS thành Hệ thống cục bộ.

Dưới đây là các bước để xác thực windows WCF:

1) Mở IIS (windows + R (chạy) sau đó nhập inetmgr, sau đó nhấp vào ok)

2) nhấp đúp vào tên PC của bạn trong phần Kết nối

3) Nhấp vào Nhóm ứng dụng

4) Chọn nhóm ứng dụng của bạn (DefaultAppPool)

5) Sau đó, dưới hành động bên phải, nhấp vào Cài đặt nâng cao:

6) Chuyển đến phần Mô hình quy trình và

7) nhấp vào Danh tính.

8) Bây giờ chọn LocalSystem.

Bây giờ hãy mở studio quản lý máy chủ sql của bạn: mở run-> sau đó nhập ssms -> sau đó nhấn ok Trong ssms, đăng nhập bằng tài khoản xác thực windows của bạn. Mở tab bảo mật mở rộng đăng nhập tab sau đó bạn sẽ có thể xem tài khoản của mình.

Bây giờ tính mở tài khoản của bạn đi đến userMapping sau đó chọn cơ sở dữ liệu bạn muốn kết nối sau đó kiểm tra các dịch vụ thành viên vai trò bạn muốn sử dụng cho các cơ sở dữ liệu được chọn. nhấp vào ok

(Đối với các dịch vụ mạng tức là người dùng mạng nội bộ, bạn cũng cần định cấu hình các cài đặt ở trên cho người dùng NT AUTHORITY \ HỆ THỐNG)

thêm Trusted_Connection = True; bất động sản trong chuỗi kết nối của bạn. Lưu nó & triển khai các dịch vụ web. Khởi động lại hồ bơi ứng dụng.

bạn sẽ có thể kết nối cơ sở dữ liệu ngay bây giờ.


Hoàn hảo! LocalSystem cố định vấn đề này đối với tôi :)
độc tài

3

Tôi có thông điệp này và tôi sử dụng Windows Authentication trên máy chủ web.

Tôi muốn người dùng web hiện được xác thực sẽ được xác thực dựa trên cơ sở dữ liệu, thay vì sử dụng IIS APPPOOL \ ASP.NET v4 Người dùng được chỉ định trong Nhóm ứng dụng.

Tôi đã tìm thấy bằng cách nhập thông tin sau vào web.config đã sửa lỗi này cho tôi:

<system.web>
  <identity impersonate="true" />
</system.web>

https://msdn.microsoft.com/en-us/l Library / bsz5788z.aspx

Tôi thấy câu trả lời khác liên quan đến việc tạo ra tên người dùng AppPool trong DB SQL hoặc chỉ để sử dụng SQL Auth. Cả hai sẽ được chính xác nếu bạn không muốn chụp hoặc người dùng Windows cá nhân an toàn bên trong SQL.

Tom


Điều này đã giải quyết nó cho chúng tôi và chúng tôi không chắc tại sao. IIS / AppPool chỉ hijacks connectionstring rằng dứt khoát nói "Integrated Security = true"? Tại sao??
Guy

3

1_in SQLServer Security => Đăng nhập => NT AUTHORITY \ SYSTEM => rightclick => Sở hữu => UserMaping => Chọn YourDatabse => Công && Chủ Select => OK 2_In IIS Application Pools DefaultAppPool => Tạm ứng Setting => nhận dạng => LocalSystem => Ok


2

Đặt danh tính chỉ làm cho công việc này trong các trang của tôi.


2

Cassini chạy trang web của bạn dưới dạng nhận dạng người dùng của riêng bạn khi bạn khởi động ứng dụng Visual Studio. IIS chạy trang web của bạn dưới dạng Nhận dạng nhóm ứng dụng. Trừ khi Danh tính nhóm ứng dụng được cấp quyền truy cập vào Cơ sở dữ liệu, bạn sẽ gặp lỗi.

IIS đã giới thiệu App Pool Identity để cải thiện bảo mật. Bạn có thể chạy các trang web theo Danh tính nhóm ứng dụng mặc định hoặc Tạo nhóm ứng dụng mới bằng tên riêng hoặc Tạo nhóm ứng dụng mới với tên riêng chạy trong Tài khoản người dùng (thường là Tài khoản miền).

Trong những tình huống nối mạng (mà không phải là trong Azure), bạn có thể làm cho một chạy App bơi mới dưới một tài khoản người dùng Active Directory Domain; Tôi thích điều này hơn tài khoản máy. Làm như vậy cung cấp bảo mật chi tiết và truy cập chi tiết vào tài nguyên mạng, bao gồm cả cơ sở dữ liệu. Mỗi trang web chạy trên một Nhóm ứng dụng khác nhau (và mỗi trang này chạy trong tài khoản Người dùng tên miền riêng).

Tiếp tục sử dụng Windows Tích hợp bảo mật trong tất cả các Chuỗi kết nối. Trong SQL Server, thêm người dùng Miền làm thông tin đăng nhập và cấp quyền cho cơ sở dữ liệu, bảng, SP, v.v. trên cơ sở mỗi trang web. Ví dụ: DB1 được sử dụng bởi Website1 có thông tin đăng nhập cho User1 vì Website1 chạy trên Nhóm ứng dụng với tên User1.

Một thách thức với việc triển khai từ DB tích hợp Visual Studio (ví dụ LocalDB) và Máy chủ Web tích hợp vào môi trường sản xuất xuất phát từ việc SID người dùng của nhà phát triển và ACL của nó không được sử dụng trong môi trường sản xuất an toàn. Microsoft cung cấp các công cụ để triển khai. Nhưng thật đáng tiếc cho nhà phát triển nghèo, người đã quen với mọi thứ chỉ hoạt động trong VS IDE mới dễ dàng với localDB và localWebServer, bởi vì những công cụ này sẽ khó sử dụng cho nhà phát triển đó, đặc biệt là cho nhà phát triển thiếu hỗ trợ SysAdmin và DBAdmin hoặc kiến thức chuyên ngành của họ. Tuy nhiên, việc triển khai lên Azure dễ dàng hơn tình huống mạng doanh nghiệp được đề cập ở trên.


2

Nếu bạn có chuỗi kết nối của bạn thêm trong web.config của bạn, hãy chắc chắn rằng "Integrated Security = false;" vì vậy nó sẽ sử dụng id và mật khẩu được chỉ định trong web.config.

<connectionStrings>
    <add providerName="System.Data.SqlClient" name="MyDbContext" connectionString="Data Source=localhost,1433;Initial Catalog=MyDatabase;user id=MyUserName;Password=MyPassword;Trusted_Connection=true;Integrated Security=false;" />
</connectionStrings>

2

Như đã chỉ ra, Không sử dụng Xác thực Windows, Sử dụng Xác thực Máy chủ SQL

Ngoài ra nếu bạn đã tạo kết nối sử dụng "Server Connection" hộp thoại, hãy chắc chắn để kiểm tra các kết nối trong web.config. Có khả năng là bạn đã tạo / sửa đổi kết nối và nó được lưu trữ như kết nối đáng tin cậy trong web.config. Chỉ cần sử dụng xác thực này

<add name="MyDBConnectionString" connectionString="Data Source=localhost;Initial Catalog=Finantial;User ID=xxx;Password=xxx" providerName="System.Data.SqlClient"/>

mà phải khắc phục lỗi.


2

Một cách khác để cấp quyền cho cơ sở dữ liệu cho người dùng IIS APPPOOL\ASP.NET v4.0như sau.
nhập mô tả hình ảnh ở đây


  1. Thêm người dùng mới với tên người dùng và tên đăng nhập như IIS APPPOOL\ASP.NET v4.0với lược đồ mặc định của bạn.
  2. Chuyển đến Lược đồ chủ sở hữu và Tư cách thành viên, Kiểm tra db_datareader, db_datawriter

1

Tôi nghĩ rằng tôi sẽ đăng nó dưới dạng câu trả lời vì nó có liên quan đến câu hỏi và có thể trả lời nó trong một số trường hợp.

Đó là thông điệp tương tự cũng xuất hiện nếu cơ sở dữ liệu không tồn tại!

Hãy chắc chắn rằng chuỗi kết nối của bạn không có lỗi chính tả, đang trỏ đến đúng phiên bản máy chủ, v.v.


1

Tôi có cùng một vấn đề Tôi đã giải quyết nó bằng cách đổi Integrated Security=Truethành false bây giờ nó đang hoạt động


1

một cái gì đó tương tự đã xảy ra với tôi, điều làm việc cho tôi là thay đổi thuộc tính Tích hợp bảo mật = Đúng thành Bảo mật tích hợp = false trong web.config của trang web


những công việc này! Tôi vừa gỡ bỏ bảo mật tích hợp
Charles Xavier

0

Bạn đã làm những gì được @Teddyđề nghị và bạn VẪN nhận được cùng một lỗi?

Hãy chắc chắn rằng bạn đang thay đổi các thiết lập cho các hồ bơi ứng dụng tương ứng với thư mục ảo của bạn và không phải là máy chủ phụ huynh. Mỗi thư mục ảo có AppPool riêng và không kế thừa.


0

Trong DefaultAppPool đặt NetworkService trong thuộc tính Nhận dạng và trong Máy chủ Sql thêm Dịch vụ mạng người dùng và cấp cho nó quyền truy cập vào cơ sở dữ liệu của bạn, điều đó rất tốt cho tôi, tôi đã thử nghiệm cục bộ nhưng tôi nghĩ đây là cấu hình tốt nhất để kết nối từ bất kỳ máy tính khác trong mạng. khi bạn đặt LocalSystem trong Danh tính trong IIS thì nó hoạt động tốt và không cần thiết phải tạo bất kỳ người dùng nào khác trong Sql Server nhưng tôi nghĩ rằng nó sẽ không hoạt động trong môi trường mạng.


0

Tôi chạy vào cùng một vấn đề thử nghiệm ASP.NET Web API

Web.Host phát triển trong Visual Studio 2013 Cơ sở dữ liệu nhanh tạo ra trong SQL Server 2012 tốc kiểm tra thực thi bằng xây dựng trong IIS Express (làm việc) Được thay đổi để sử dụng IIS địa phương (từ trang bất động sản - tùy chọn web) kiểm tra Ran với Fiddler lỗi nhận - không có khả năng cơ sở dữ liệu mở cho nhà cung cấp .... trích dẫn 'APPPOOL \ DefaultAppPool'

Giải pháp đã làm việc.

Trong IIS

Nhấp vào nhóm ứng dụng 'DefaultAppPool' Đặt Xác định = 'ApplicationPoolIdentity' Đặt .NET framework = v4.0 (mặc dù ứng dụng của tôi là 4,5)

Trong SQL Server Management Studio

Nhấp chuột phải vào thư mục Bảo mật (trong công cụ Máy chủ SQL, áp dụng cho tất cả các bảng) Nhấp chuột phải vào Người dùng và thêm 'IIS APPPOOL \ DefaultAppPool' Trong bảo mật trên cột 'Cấp' kiểm tra các tùy chọn bạn muốn cung cấp. Về những điều trên nếu bạn là một DBA có lẽ bạn biết và muốn kiểm soát những lựa chọn đó là gì. Nếu bạn giống như tôi, một nhà phát triển chỉ muốn thử nghiệm dịch vụ API WEB của bạn, điều này cũng có thể truy cập SQL Server thông qua EF 6 theo kiểu MVC thì chỉ cần kiểm tra mọi thứ. :) Có tôi biết nhưng nó đã làm việc.


0

Trong trường hợp bạn thêm thông tin đăng nhập mới, hãy đảm bảo rằng trong thuộc tính máy chủ (rightclick -> property) / security, chế độ xác thực được đặt thành cả sqlserver và windows không chỉ windows.


0

Thêm "Mọi người" trong bảo mật. Nếu bạn đã thêm Máy chủ và người dùng đăng nhập vào cơ sở dữ liệu, thì đây là thứ bạn đang thiếu. Hi vọng điêu nay co ich.


Chúng tôi đặt quyền theo nhu cầu của mình. Phần xác thực được xử lý và chúng tôi kiểm tra ủy quyền qua mã để cho phép truy cập. Đừng ngại sửa tôi nếu bạn cảm thấy có sự mơ hồ. Cảm ơn.
avinava basu

0

Đối với bản ghi, nếu bạn gặp phải lỗi này sau khi chuyển từ LocalDBsang SQLEXPRESS, hãy đảm bảo cơ sở dữ liệu đã tồn tại SQLEXPRESS. Bạn có thể xác minh điều này trong Management Studio.

Tôi đã có cùng một vấn đề khi sử dụng Entity Frameworksau khi chuyển sang SQLEXPRESS from LocalDB. Tôi đã phải chạy Update-Databaselệnh. Tôi đã có thể kết nối thành công sau đó.


0

Tôi đã làm đúng như @JeffOgata đã nói nhưng tôi đã gặp lỗi:

Windows NT user or group 'IIS APPPOOL\ASP.NET v4.0' not found. Check the name again. (Microsoft SQL Server, Error: 15401)

Tôi nhìn vào thông báo lỗi của tôi một lần nữa và nó nói Login failed for user 'IIS APPPOOL\DefaultAppPool'.

Sau khi thêm một người dùng có tên IIS APPPOOL\DefaultAppPoolmọi thứ đã làm việc.


0

Tôi đã sử dụng SQL Server Profiler (có sẵn trong menu SSMS => Công cụ) và thấy ở đó (khi IIS cố kết nối với cơ sở dữ liệu) rằng người dùng IIS của tôi vì lý do nào đó NT AUTHORITY \ IUSR, bất kể tất cả các bước được đề xuất trong câu hỏi này . Vì vậy, tôi đã thêm người dùng đó vào SQL Server và nó đã hoạt động ...


0

Trong biểu mẫu web Asp.net,

lỗi này đã được sửa khi cài đặt asp.net từ:

Trình quản lý máy chủ> Quản lý> Thêm vai trò và tính năng> Vai trò máy chủ> Máy chủ web (IIS)> Máy chủ web> Phát triển ứng dụng> ASP.NET 3.5 / 4.6 được cài đặt.

vấn đề của tôi đã được sửa

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.