2010-05-18 19 views
6

Làm thế nào để bạn xác định nhận dạng quy trình cho ASP.NET? Tôi nhận được một UnAthorizedAccessExeption khi người dùng nhấp vào một LinkButton được thiết kế để sử dụng System.IO để xóa một tệp nằm trong thư mục con của thư mục gốc cho một dự án ứng dụng Web trong Visual Studio 2008.ASP.NET - Làm thế nào để bạn tìm thấy bản sắc quy trình?

Trả lời

9

Đối với người dùng đang chạy quy trình: Environment.UserName

đối với người yêu cầu trang: Page.User.Identity

Edit: dịch vụ mạng là tài khoản mặc định được sử dụng để phục vụ nội dung trên mạng (ví dụ IIS). Xem tất cả built-in accounts. Bạn sẽ phải cấp quyền truy cập Dịch vụ mạng cho thư mục (cũng cung cấp cho tất cả các trang web khác sử dụng quyền truy cập tài khoản này) hoặc thiết lập một tài khoản khác.

Bạn đang sử dụng IIS 6 hoặc 7?

+0

Nelson, nhận xét của bạn "... hoặc cung cấp cho mạng truy cập dịch vụ" là những gì tôi đã thực sự tìm kiếm. Avitus cung cấp một cách để làm điều đó, nhưng cửa hàng của tôi không sử dụng đúng mạo danh. Tôi đã sử dụng xác thực Windows và cho phép sửa đổi các quyền của Dịch vụ mạng. Tôi sẽ quay lại nếu điều này không hoạt động trên máy chủ sản xuất. Nhờ tất cả các bạn đã giúp tôi. Là một tumbleweed, tôi muốn cung cấp cho tất cả các bạn MAX điểm. Hãy cho tôi biết tôi có thể làm gì với MAX một cách phù hợp. – dannyrosalex

+1

@ Berlioz: Chỉ cần lưu ý rằng trong một môi trường sản xuất bạn có thể không muốn làm theo cách này. Nếu bạn cung cấp quyền truy cập Dịch vụ mạng cho thư mục, tất cả các trang web khác chạy dưới dạng Dịch vụ mạng cũng sẽ có quyền truy cập. Thông thường, bạn chỉ sử dụng Dịch vụ mạng nếu quyền/cài đặt mặc định là ok, nhưng tạo người dùng (có thể là người dùng máy tính cục bộ) cho mỗi trang web bạn sẽ tùy chỉnh. –

4

Tôi giả sử bạn muốn có được danh tính quy trình trong quá trình thực thi trang ASPX. Trong trường hợp đó:

System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
+0

Có, đó là chính xác và khi chèn dòng mã của bạn vào một nhãn, tôi nhận được thông tin sau để hiển thị - "DOMAINNAME \ USERNAME". Tôi rõ ràng đang sử dụng xác thực Windows trên mạng Windows. Câu hỏi tiếp theo của tôi, hãy giáo dục tôi, tài khoản "DỊCH VỤ MẠNG" là gì? – dannyrosalex

+0

Có ít nhất ba cách để nhận người dùng: http://www.dotnetmonster.com/Uwe/Forum.aspx/vs-net-general/1854/Getting-user-name-Environment-UserName-vs-SystemInformation –

+1

@Berlioz: http://msdn.microsoft.com/en-us/library/ms684272%28VS.85%29.aspx –

2

gì bạn sẽ cần phải làm là đặt một thẻ

<identity impersonate="true" username="x" password="x" />

trong web.config của bạn có quyền để xóa các tập tin.

+0

... hoặc cấp quyền truy cập "Dịch vụ mạng", thay đổi người dùng/mật khẩu trong hồ bơi ứng dụng, sử dụng xác thực Windows ... –

+0

Nếu giải pháp của tôi nằm trong SourceSafe và tôi gỡ lỗi (F5) trên Cassini, các tệp sẽ bị xóa khỏi thư mục con hoặc SS sẽ ngăn chúng bị xóa? – dannyrosalex

+0

deb = debug? Nếu bạn đang gỡ lỗi bằng cách sử dụng máy chủ web của Visual Studio (Cassini), thì bạn không thể thay đổi nhận dạng pool ứng dụng (IIS). Những gì Avitus nói sẽ hoạt động, nếu không bạn có thể cấp quyền truy cập tài khoản Dịch vụ Mạng trên thư mục đó hoặc sử dụng xác thực tích hợp (Windows) (chủ yếu là hữu ích trong các tình huống mạng nội bộ) –

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