Tôi đang chơi xung quanh với Dịch vụ dữ liệu WCF (ADO.NET Data Services). Tôi có một mô hình khung thực thể chỉ vào cơ sở dữ liệu AdventureWorks.Làm cách nào để lưu trữ đúng dịch vụ dữ liệu WCF kết nối với SQLServer trong IIS? Tại sao tôi gặp lỗi?
Khi tôi gỡ lỗi tệp svc của mình từ trong Visual Studio, nó hoạt động tốt. Tôi có thể nói /awservice.svc/Customers và lấy lại nguồn cấp dữ liệu ATOM mà tôi mong đợi.
Nếu tôi xuất bản dịch vụ (được lưu trữ trong ứng dụng web ASP.NET) tới IIS7, cùng một chuỗi truy vấn sẽ trả về lỗi 500. Trang gốc svc hoạt động như mong đợi và trả về thành công ATOM. Đường dẫn/Khách hàng không thành công.
Đây là những gì các khoản tài trợ của tôi trông giống như trong file svc:
public class AWService : DataService<AWEntities>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
Cập nhật: tôi kích hoạt lỗi verbose và nhận được như sau trong thông điệp XML:
<innererror>
<message>The underlying provider failed on Open.</message>
<type>System.Data.EntityException</type>
<stacktrace>
at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(
...
...
<internalexception>
<message>
Login failed for user 'IIS APPPOOL\DefaultAppPool'.
</message>
<type>System.Data.SqlClient.SqlException</type>
<stacktrace>
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, ...
Tôi đang chạy cả IIS và SQLServer trên máy của mình. Tôi nghĩ * Tôi đang sử dụng Xác thực Windows trên cả hai. Tôi biết SQLServer chắc chắn. Bất kỳ cách nào tôi có thể kiểm tra IIS? –
@Pharabus - Bạn là một thiên tài. Tôi đã phải sửa đổi tài khoản Identity được sử dụng bởi DefaultAppPool. Đây là một bài viết về cách thực hiện điều này: http://technet.microsoft.com/en-us/library/cc771170%28WS.10%29.aspx. Theo mặc định, nó đang sử dụng một tài khoản đặc quyền thấp. Đặt nó vào LocalSystem đã làm các trick. –