2012-01-30 12 views
9

Chúng tôi đang viết một ứng dụng Silverlight đa dụng. Người dùng đăng nhập bằng cách sử dụng xác thực Windows Forms và chúng tôi kéo chuỗi kết nối cho người dùng đó từ một bảng. Chuỗi có dạng:Tại sao kết nối cơ sở dữ liệu này không thành công khi "Application Name = application" nằm trong chuỗi kết nối?

Data Source=1.2.3.4; Initial Catalog=database; Persist Security Info=True; User ID=######; Password=########## 

Điều này đã hoạt động tốt. Sau đó chúng tôi quyết định rằng thiết lập tên ứng dụng, vì những lý do outlined here sẽ là một ý tưởng tốt:

Data Source=1.2.3.4; Initial Catalog=database; Application Name=application; Persist Security Info=True; User ID=######; Password=########## 

Tuy nhiên, bây giờ kết nối được không được thực hiện vì vậy chúng tôi đang nhận lỗi. Điều này chỉ thất bại trên trang web được triển khai. Chạy qua Visual Studio rõ ràng là không bị ảnh hưởng. Không có thay đổi nào đối với mã tạo kết nối. Tôi sẵn sàng tin rằng sẽ có những thay đổi, nhưng tôi đã không thể tìm ra những gì họ nên làm.

Các kết nối đang được tạo ra như thế này:

public class OurDataContext : DataContext 
{ 
    public OurDataContext() 
     : base(SessionCache.OurConnectionString) 
    { 
     .... 
    } 
} 

SessionCache.OurConnectionString là chuỗi như đọc từ cơ sở dữ liệu.

CẬP NHẬT

Sự chuyển đổi sang chuỗi kết nối thể là một cá trích đỏ. Chúng tôi chỉ nhận được lỗi này trên một máy chủ web (một máy chủ mà tôi không có quyền truy cập trực tiếp). Thêm thuộc tính vào cơ sở dữ liệu được tham chiếu bởi một máy chủ web khác (mà tôi do có quyền truy cập) không tái tạo sự cố. Điều này dẫn tôi đến kết luận rằng lỗi ở đâu đó khác. Tuy nhiên, tôi vẫn không thể giải quyết vấn đề này.

Các lỗi thực tế là một ngoại lệ:

An exception of type 'System.ServiceModel.DomainServices.Client.DomainOperationException' occurred and was caught. 
------------------------------------------------------------------------------------------------------------------ 
01/31/2012 14:18:53 
Type : System.ServiceModel.DomainServices.Client.DomainOperationException, System.ServiceModel.DomainServices.Client, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
Message : Load operation failed for query 'GetUserSecurityConfig'. The remote server returned an error: NotFound. 
Status : ServerError 
ErrorCode : 0 
Data : System.Collections.ListDictionaryInternal 
Stack Trace : The stack trace is unavailable. 

Tất cả các nghiên cứu tôi đã thực hiện ngày hôm nay trên này trả về một số điều khá cơ bản mà không nên đã thay đổi:

  • System. ComponentModel.DataAnnotations, System.ServiceModel.DomainServices.EntityFramework, System.ServiceModel.DomainServices.Hosting và System.ServiceModel.DomainServices.Server không được sao chép vào thư mục \ bin. Tôi đã kiểm tra và họ đang có.
  • Lỗi kết nối với máy chủ cơ sở dữ liệu. Tôi không nghĩ rằng đây là trường hợp khi xác thực biểu mẫu hoạt động. Nó là một cơ sở dữ liệu khác trên máy chủ, nhưng thông tin đăng nhập là như nhau.
+0

Tôi không có chuyên gia máy chủ SQL nhưng tôi sẽ cố gắng loại bỏ phần "thông tin bảo mật liên tục" và xem liệu nó có giúp ... một điểm khác: "ứng dụng" có chứa bất kỳ khoảng trống hoặc tương tự nào không? – Yahia

+0

@Yahia - Không có khoảng trắng trong "ứng dụng". "Thông tin bảo mật liên tục" cần phải đúng để lấy lại tên người dùng và mật khẩu [Nguồn] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx) – ChrisF

+0

Bạn đã cấu hình "ứng dụng" trong db được triển khai? –

Trả lời

1

Sự cố đã xảy ra là do phiên bản Dịch vụ RIA được cài đặt trên máy chủ.

Gần đây, chúng tôi đã thay đổi các dự án để bao gồm Dịch vụ RIA thông qua trình quản lý gói NuGet và máy chủ này đã cài đặt Dịch vụ RIA cho VS2010. Khi chúng tôi phân loại mọi thứ đã quay trở lại cuộc sống.

Không rõ lý do tại sao phải mất quá lâu để vấn đề này thể hiện rõ ràng.

0

Chúng tôi chỉ gặp lỗi này trên một máy chủ web (máy tôi không có quyền truy cập trực tiếp). Việc thêm thuộc tính vào cơ sở dữ liệu được tham chiếu bởi một máy chủ web khác (mà tôi có quyền truy cập) không tái tạo sự cố.

Kiểm tra cấu hình máy chủ web và rằng cơ sở dữ liệu được cài đặt chính xác.

trông giống như cài đặt cấu hình máy chủ web/db cho tôi.

+0

Đó là kết luận chúng tôi cũng sẽ đến. Tuy nhiên, không có gì được bật lên. – ChrisF

+0

@ChrisF Kiểm tra (và so sánh với máy chủ web đang hoạt động) mà cơ sở dữ liệu và lược đồ mà người dùng đang kết nối và bản đồ người dùng trong máy chủ sql. Có vẻ như kết nối đang được thiết lập cho một cơ sở dữ liệu không có GetUserSecurityConfig. Hãy thử 'Initial Catalog = schema.database' để xác nhận nơi nó đang kết nối đến. – PhilW