2008-08-27 31 views
8

Tôi có một ứng dụng web cần đọc (và có thể ghi) các tệp từ một mạng chia sẻ. Tôi đã tự hỏi cách tốt nhất để làm điều này sẽ là gì?Truy cập các tệp từ chia sẻ mạng trong ứng dụng web C#

Tôi không thể cấp cho tài khoản mạng hoặc tài khoản aspnet quyền truy cập vào mạng chia sẻ. Tôi có thể sử dụng mạo danh.

Chia sẻ mạng và ứng dụng web đều được lưu trữ trên cùng một tên miền và tôi có thể tạo người dùng mới trên miền cụ thể cho mục đích này, tuy nhiên tôi không chắc chắn cách tham gia các dấu chấm giữa tạo luồng và chỉ định thông tin đăng nhập để sử dụng trong ứng dụng web.


Thật không may ổ đĩa không được ánh xạ dưới dạng ổ đĩa mạng trên máy, nó chỉ có sẵn cho tôi như một mạng chia sẻ, tiếc là tôi không thể thực hiện cuộc gọi trong suốt.

Có một vấn đề tôi có thể nghĩ đến với mạo danh ... Tôi chỉ có thể mạo danh một người dùng trên mỗi miền ứng dụng I nghĩ rằng nhưng tôi rất vui khi được sửa chữa. Tôi có thể cần phải viết tệp này cho một số cổ phiếu khác nhau có nghĩa là tôi có thể phải mạo danh một số người dùng.

Tôi thích ý tưởng tạo mã thông báo ... nếu tôi có thể làm điều đó, tôi có thể yêu cầu sử dụng hết thông tin đăng nhập và sau đó tự động áp dụng bảo mật và cung cấp cho họ thông báo lỗi có ý nghĩa nếu quyền truy cập bị từ chối ... Tôi sẽ chơi nhưng tôi sẽ quay lại với bản cập nhật.

Trả lời

0

Tôi không gặp sự cố khi kết nối với mạng chia sẻ rõ ràng như thể chúng là ổ đĩa cục bộ. Vấn đề duy nhất bạn có thể có là những gì bạn đã đề cập: có quyền truy cập tài khoản aspnet để chia sẻ. Mạo danh có lẽ là cách tốt nhất để làm điều này.

Bạn sẽ có thể sử dụng bất kỳ đối tượng dòng phim nào để truy cập vào mạng chia sẻ miễn là nó có ký tự ổ đĩa trên máy chủ.

0

Mạo danh hoạt động tốt cho tôi trong trường hợp này. Chúng tôi đã có một trình hướng dẫn tải lên tệp zip thông qua trang web nhưng chúng tôi đã cân bằng tải trang web. Vì vậy cần thiết để thiết lập một cách để lưu tệp trên tất cả các máy.

Có nhiều cách khác nhau để thực hiện. Chúng tôi quyết định thực hiện tất cả các yêu cầu để chạy theo người dùng chúng tôi thiết lập và chỉ cần thêm mục nhập web.config và thiết lập quyền bảo mật trên các thư mục cho người dùng. Bài viết này kb giải thích việc thiết lập rất tốt.

3

Cho tất cả mọi người đã có tài khoản miền. Hãy thử xác thực tích hợp IIS. Bạn sẽ nhận được một hộp đăng nhập xấu xí ngoài mạng nhưng tín dụng của bạn nên chuyển xuống phần chia sẻ tệp.

@lomaxx
Bạn có nói rằng chỉ bạn có perms để chia sẻ hoặc bạn tự ánh xạ nó vào một ký tự ổ đĩa. Nếu sau này bạn có thể sử dụng ucn \ host \ share giống như cách bạn dùng c: \ shared_folder.

Ngẫu nhiên Sẽ là gánh nặng khi phản ánh chia sẻ với thư mục cục bộ trên máy chủ không? Tôi nghe ROBOCOPY khá tiện dụng.

Một ý tưởng khác. Chạy IIS trên mục tiêu chia sẻ của bạn, bạn có thể đọc qua http và nếu bạn cần viết webdav điều tra.

0

Bạn có một số tùy chọn và một trong số đó là mạo danh như bạn đã đề cập. Tuy nhiên, một cái khác mà tôi thích sử dụng và đã sử dụng trong quá khứ là một cuộc gọi dịch vụ đáng tin cậy.Chúng ta hãy giả sử trong một thời điểm rằng nó luôn an toàn hơn nhiều để hạn chế truy cập thông qua IIS để đảm bảo có ít lỗ nhất có thể. Với điều đó chúng ta hãy đi xuống con đường này.

Xây dựng dịch vụ WCF có một vài điểm vào và giao diện có thể trông như thế này.

public interface IDocumentService 
{ 
    public string BuildTrustedRelationship(string privateKey); 

    public byte[] ReadFile(string token, string fileName); 

    public void WriteFile(string token, string fileName, byte[] file); 
} 

Bây giờ, bạn có thể lưu trữ dịch vụ này thông qua một dịch vụ Windows rất dễ dàng và vì vậy bây giờ tất cả các bạn cần làm là vào Application_start xây dựng mối quan hệ với dịch vụ để nhận mã thông báo của bạn và bạn đang đi đến các cuộc đua. Điều tốt đẹp khác ở đây là dịch vụ này là nội bộ, đáng tin cậy và thậm chí tôi đã lưu trữ nó trên máy chủ tệp trước và do đó việc cấp phép cho hoạt động này dễ dàng hơn nhiều.

0

Nếu bạn có thể tạo người dùng AD mới, tôi nghĩ giải pháp đơn giản nhất là chạy Application Pool chạy dưới quyền của tài khoản AD đó, điều đó có nghĩa là ứng dụng của bạn hiện đang chạy với tư cách là người dùng AD. Bạn sẽ cần thêm người dùng AD vào Nhóm quy trình công nhân IIS trên máy đang chạy ứng dụng của bạn. Sau đó, miễn là người dùng AD của bạn có quyền ghi trên mạng chia sẻ, bạn sẽ có thể sử dụng đường dẫn UNC trong các hoạt động tệp của bạn.

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