2011-12-29 46 views
14

Tôi đang gặp khó khăn trong việc tìm kiếm thông tin về cách làm cho RavenDB hoạt động trên mạng. Trong cùng một mạng, tôi có thể có một cá thể của ứng dụng đang chạy và nó sẽ hiển thị dữ liệu từ RavenDB của tôi. Tuy nhiên, khi tôi cố gắng ghi dữ liệu, tôi nhận được ngoại lệ 401 trái phép.Truy cập mạng RavenDB

Cách chính xác để thiết lập RavenDB được truy cập qua mạng là gì?

Ngay bây giờ, tôi có điều này trong Raven.Server.exe.config, mà chỉ là một giải pháp ngắn hạn:

<add key="Raven/AnonymousAccess" value="All" /> 

Những gì tôi không hiểu, đó là trang web RavenDB nói để sử dụng một cái gì đó như thế này:

<connectionStrings> 
    <add name="RavenDb" 
     connectionString="Url=http://serverName:8080;user=user;password=password"/> 
</connectionStrings> 

Ok, đó là điều tuyệt vời cho ứng dụng đang chạy, nhưng làm cách nào để đặt máy chủ RavenDB cho phép người dùng và mật khẩu? Có phải đó chỉ là một cách sai lầm để làm điều đó (bằng cách nào đó thiết lập tệp cấu hình RavenDB để cho phép các thông tin đăng nhập đó)? Nếu đó là sai, làm thế nào tôi phải xác định thông tin đăng nhập ở phía máy chủ?

Chỉnh sửa: Dưới đây là các nỗ lực và kết quả của tôi:

Tôi đang chạy RavenDB bằng cách bấm đúp vào Raven.Server.exe.

Kịch bản 1

Khách hàng app.config:

<connectionStrings> 
    <add name="RavenDb" connectionString="Url = http://server:8080;domain=Xx;user=Xx\user;password=pw"/> 
    </connectionStrings> 

DocumentStore Setup:

DocumentStore documentStore = new DocumentStore(); 
documentStore.ConnectionStringName = "RavenDb"; 
documentStore.Initialize(); 

Lưu Operation:

Session.Store(objectToSave); 

Kết quả: "Máy chủ từ xa trả về lỗi: (401) Không được phép".

Kịch bản 2

Khách hàng app.config:

<add key="databaseUrl" value="http://server:8080"/> 

DocumentStore Setup:

string databaseUrl = ConfigurationManager.AppSettings["databaseUrl"];    
DocumentStore documentStore = new DocumentStore(); 
documentStore.Url = databaseUrl; 
documentStore.Initialize(); 

Lưu Operation:

Session.Store(objectToSave); 

Kết quả: "Máy chủ từ xa trả về lỗi: (401) Không được phép". Ngoại lệ bên trong: "Tên chính của mục tiêu không chính xác"

Trả lời

7

Tạo người dùng cục bộ trên máy RavenDB chạy và sử dụng bất kỳ thông tin xác thực nào bạn muốn. Sau đó gán quyền đọc/ghi cho thư mục/Data (và thư mục/Tenants nếu cần) cho người dùng này.

Nếu bạn đang chạy RavenDB dưới dạng dịch vụ hoặc ứng dụng độc lập, auth từ xa sẽ hoạt động với thông tin xác thực người dùng (windows).Nếu bạn đang chạy trên IIS, hãy đảm bảo rằng bạn đã bật Xác thực Windows (bị tắt theo mặc định!).

+0

ahhhhh ... do đó, nó chỉ là ủy quyền cho thư mục Data. Tôi không cần phải chỉ định người dùng trong cấu hình máy chủ. Các kết nối máy khách có thể chỉ định người dùng trong cấu hình, và miễn là người dùng đó có quyền truy cập vào thư mục Dữ liệu ... Tôi sẽ thử điều đó. –

+0

Vâng, đúng vậy. –

+0

Đã thử hai cách tiếp cận. Xem các kịch bản/chỉnh sửa ở trên. Tôi đang thiếu gì? –

3

Bob, Theo mặc định, RavenDB sử dụng xác thực Windows. Vì vậy, nếu bạn tạo người dùng trên máy chủ, nó sẽ chấp nhận nó. Cách khác là xác định người dùng ravendb cụ thể, nhưng nhiều người chỉ sử dụng Windows Auth.

+0

Đã thử hai cách tiếp cận. Xem các kịch bản/chỉnh sửa ở trên. Tôi đang thiếu gì? –

4

Đối với tôi, tôi phải thêm miền vào chuỗi kết nối trên máy sản xuất, nhưng KHÔNG khi truy cập cùng một máy đó từ xa ... Tôi không biết.

Lưu ý: Tôi đã tạo một người dùng cửa sổ có tên RAVENDB và gán cho nó quyền đầy đủ vào thư mục dữ liệu.

nên chuỗi kết nối của tôi mà làm việc tốt từ xa là

<add name="raven" connectionString="Url=http://myserver.com:8080;user=RAVENDB;password=PASS" /> 

trong khi trên máy chủ thực tế, tôi đã phải sử dụng

<add name="raven" connectionString="Url=http://myserver:8080;DOMAIN=MYSERVERNAME;user=RAVENDB;password=PASS" /> 
+0

+1 domain = thực sự là những gì tôi cần –

+0

+1: Rất cám ơn! –

Các vấn đề liên quan