2012-01-23 20 views
5

Bối cảnh (skip to phía dưới nếu bạn muốn câu hỏi)AnkhSVN phá vỡ ASP.NET cho phép chia sẻ với SVN 1,7

Gần đây tôi đã nâng cấp một kho SVN (lưu trữ trên Assembla) để SVN 1.7. Sau khi làm như vậy, chúng tôi bắt đầu liên tục gặp phải rất nhiều lỗi File Access Denied trên các trang ASP.NET nằm trong bản sao làm việc cục bộ của kho lưu trữ.

Một số thư mục cũng bắt đầu nhận quyền truy cập tệp lạ (chúng trở thành chỉ đọc được đánh dấu) và chia sẻ người dùng đã bị xóa khỏi chúng. Những vấn đề này sẽ chỉ bắt đầu xảy ra sau một chu kỳ cập nhật/cam kết, thông qua plugin Visual Studio của AnkhSVN, nhưng không phải lúc nào cũng vậy; nó có vẻ rất cao.

Sửa lỗi tạm thời duy nhất mà chúng tôi đã tìm thấy cho đến nay là cam kết mọi thay đổi chưa thực hiện, xóa bản sao cục bộ và kiểm lại bản sao làm việc đầy đủ (với TortoiseSVN). Tuy nhiên, đó không phải là một sửa chữa khả thi, và nó ảnh hưởng nghiêm trọng đến năng suất.

Trang web này là Azure WebWorkerRole dựa trên Azure. Nó chưa bao giờ đưa ra các vấn đề trước khi nâng cấp lên SVN 1.7. Tôi đã thử không quan trọng với các điều khoản IIS nội bộ để giải quyết vấn đề, tuy nhiên, không có súc sắc.

Môi trường của tôi

  • Visual Studio 2010 Ultimate SP1 10.0.40219.1
  • AnkhSVN 2.3.10509 (phiên bản mới nhất, hỗ trợ SVN 1.7.1)
  • TortoiseSVN 1.7.1, Xây dựng 22.161 - 64 Bit
  • Chạy trong Chế độ gỡ lỗi qua môi trường mô phỏng Azure

Câu hỏi

Có thể cho SVN 1.7 hoặc bất kỳ công cụ nào trong môi trường của tôi phá vỡ quyền truy cập tệp để các tệp trở nên không sử dụng được trong trang ASP.NET không? và quan trọng hơn, làm thế nào để sửa lỗi này?


Các chính xác lỗi cho phép tập tin đổ ra là thế này:

truy cập vào đường dẫn '// tập tin //' bị từ chối.

Mô tả: Một ngoại lệ không được giải quyết xảy ra trong khi thực hiện yêu cầu web hiện tại là . Vui lòng xem lại dấu vết ngăn xếp để biết thêm thông tin về về lỗi và vị trí bắt nguồn từ mã.

Chi tiết ngoại lệ: System.UnauthorizedAccessException: Truy cập vào đường dẫn '// file //' bị từ chối.

ASP.NET không được phép truy cập tài nguyên được yêu cầu. Xem xét cấp quyền truy cập vào tài nguyên cho yêu cầu ASP.NET nhận dạng. ASP.NET có một bản sắc quá trình cơ sở (thường là {MACHINE} \ ASPNET trên IIS 5 hoặc Dịch vụ mạng trên IIS 6 và IIS 7 và cấu hình ứng dụng được định cấu hình trên IIS 7.5) được sử dụng nếu ứng dụng không mạo danh .Nếu ứng dụng là mạo danh qua, danh tính sẽ là người dùng ẩn danh (thường là IUSR_MACHINENAME) hoặc người dùng yêu cầu được xác thực .

Để cấp quyền truy cập ASP.NET cho một tệp, hãy nhấp chuột phải vào tệp trong Explorer, chọn "Thuộc tính" và chọn tab Bảo mật. Nhấp vào "Thêm" để thêm người dùng hoặc nhóm thích hợp. Đánh dấu tài khoản ASP.NET và chọn các hộp cho quyền truy cập mong muốn.

Nhưng bản sao làm việc sạch sẽ không tạo ra lỗi này. So sánh các điều khoản của hai, có vẻ như các bản sao làm việc không bị lỗi được chia sẻ (với IUSR và tài khoản cục bộ), trong khi các bản sao bị hỏng không chia sẻ, nhưng chia sẻ không bao giờ được thay đổi bởi người dùng.

+0

Bạn có thể cho biết cách thức các quyền của tệp bị hỏng không? Chúng được thiết lập là gì, những gì còn thiếu vv? Bạn có thể chỉ ra root của bản sao làm việc (thư mục chứa thư mục .svn) không? Ngoài ra tôi nghĩ rằng bạn cần phải chỉnh sửa câu hỏi của bạn để xác định sự khác biệt giữa kho lưu trữ và bản sao làm việc. Bạn không sao chép một "kho lưu trữ phía máy khách" trong Subversion. –

+0

@SanderRijken: ok, tôi sẽ cập nhật nó. Trong điều kiện của clone suy nghĩ, là điều của GIT ... – Necrolis

Trả lời

3

Tôi đã giải quyết vấn đề này bằng cách truy cập cài đặt bảo mật cho thư mục trang web và bấm Nâng cao rồi thay đổi Quyền cho người dùng IIS_IUSRS. Tôi đã kiểm tra "Thay thế tất cả các quyền đối tượng con với quyền thừa kế từ đối tượng này" và nhấp vào áp dụng.

Trước đó, tôi đã cấp cho người dùng IIS quyền đầy đủ vào thư mục tmp ẩn trong thư mục gốc của thanh toán, nhưng tôi không biết điều này có giúp ích gì không.

Tôi không chắc đây có phải là bản sửa lỗi vĩnh viễn hay không, nhưng trong trường hợp không, bạn ít nhất có thể sử dụng nó để áp dụng lại quyền cho tất cả các tệp trong một thao tác.

+0

Cuối cùng nó đã phá vỡ một lần nữa, áp dụng lại các quyền bảo mật cố định nó, đồng thời chúng tôi quản lý để tìm hiểu rằng nếu một người dùng nhất định cam kết, chúng tôi nhận được điều này vấn đề, và tôi có cảm giác IIS của anh ta được thiết lập sai – Necrolis

+0

Sau khi đã áp dụng sửa chữa ở trên và sử dụng nó trong 8 ngày, tôi đã không gặp vấn đề nữa. –

+0

Tôi nghĩ rằng tôi có cùng một vấn đề với MVC3, nhưng nó hơi khác nhau. Tôi đã thêm các quyền như bạn đã đề xuất. Ngoài ra đối với bản sắc DỊCH VỤ MẠNG (là id của appPool), nhưng mọi yêu cầu đối với tệp javascript hoặc css đều trả lại mã HTTP 302 FOUND. Sau đó, mọi yêu cầu được chuyển hướng đến trang đăng nhập với các đối số vô nghĩa. Có ai có bất kỳ ý tưởng khác làm thế nào để giải quyết nó? – jkokorian

16

Khi phiên bản phụ cập nhật tệp, tệp đầu tiên sẽ tạo phiên bản tạm thời bằng .svn/tmp /. Sau đó nó di chuyển tệp vào đúng vị trí. (Điều này để tránh tham nhũng)

Trong 1.6 nó đã làm điều này cho mỗi thư mục của chính nó, nhưng trong 1.7 chỉ có một .svn trong thư mục cấp cao nhất của bản sao làm việc của bạn.

Nếu bằng cách nào đó các quyền hệ thống tệp của thư mục .svn này bị hạn chế, có thể các hạn chế được sao chép với tệp khi nó được di chuyển tại chỗ. (Subversion không tự thay đổi quyền trên Windows)

1

Nhiều thông tin nằm trong thư mục .svn bên trong thư mục nơi dự án đã được kiểm tra. Vì vậy, theo ý kiến ​​của tôi tốt hơn sử dụng SVN riêng biệt với các công cụ tích hợp nâng cao. Ngoài ra this giải quyết vấn đề như thế này.

1

tôi thấy cùng một vấn đề chính xác điều này xảy ra khi tôi đã làm một 'Hoàn nguyên' sử dụng:

  • Rùa SVN 1.6.16
  • AnkhSVN 2.3.11269.1348.
  • Visual Studio 2010 Professional
  • Windows 7 - 64 bit.

Tôi đã hoàn toàn bối rối khi lần đầu tiên tôi gặp lỗi quyền và bắt đầu bằng cách nghĩ rằng đó là mã của tôi. Sau một thời gian không quan tâm đến việc tôi đã xóa toàn bộ dự án và tải xuống lại từ Subversion đã khắc phục sự cố.

Khi sự cố này xảy ra lần nữa, tôi xem xét kỹ hơn tệp đã hoàn nguyên và tôi thấy quyền trên các tệp được hoàn nguyên không khớp với quyền của các tệp khác. Các quyền 'Người dùng' cụ thể, đối với máy mà Visual Studio đang chạy, bị thiếu hoàn toàn.

Vì vậy, tôi chỉ cần thêm nó vào bằng cách:

  • nhấp chuột phải vào tập tin vấn đề. Điều này làm cho cửa sổ thuộc tính tệp xuất hiện.
  • Sau đó nhấp vào 'Chỉnh sửa ...'. Cửa sổ cho phép xuất hiện.
  • Sau đó nhấp vào Thêm và cửa sổ 'Chọn người dùng, Máy tính, Tài khoản dịch vụ hoặc Nhóm sẽ xuất hiện.
  • Nhấp vào nút Loại đối tượng và chọn tất cả các hộp.
  • Nhấp vào nút Vị trí và đảm bảo tên máy của bạn được chọn.
  • Nhập 'người dùng', sau đó nhấp vào nút 'kiểm tra tên'.
  • Nhấp vào OK trên tất cả các cửa sổ để đóng chúng.

Trang web của bạn bây giờ sẽ chạy mà không có lỗi quyền.