2009-10-23 40 views
5

Làm thế nào tất cả. Tôi đang cố gắng giải quyết một vấn đề mà dường như không phải là không phổ biến và tôi không chắc làm cách nào để tìm ra cách giải quyết vấn đề này cho mọi người. Khi tôi chạy StructureMap trên máy tính của mình thông qua IIS tôi nhận được một ngoại lệ và nó trông như thế này:StructureMap, IIS 7.5 và FileIOException

**Description**: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file. 
**Exception Details**: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 

Câu hỏi này đã đưa ra ở đây tại SO (https://stackoverflow.com/questions/784666/), in the comments on this blog posta year or so ago on the structuremap mailing list.

Sự cố của tôi không chạy trong môi trường lưu trữ nước ngoài. Tôi thậm chí không thể làm cho nó chạy trên hộp của riêng tôi (IIS 7.5, Win7 RC, .NET 3.5). Tôi đã cố định cấu hình trang web để sử dụng tệp chính sách tùy chỉnh và FileIOPermission được đánh dấu là có quyền truy cập không hạn chế ... không có xúc xắc. Nếu bất cứ ai có một số lời khuyên hoặc một liên kết nó sẽ được đánh giá rất nhiều.

Cập nhật Vì vậy, không có cách nào rằng đây là cách tốt nhất để giải quyết vấn đề, nhưng sau khi đào bới xung quanh và nhìn vào những gì Joshua đã đề cập, đó là những điều tôi phải làm gì để có được nó làm việc: StructureMap, Code Access Security and a Bad Solution to a Problem. Một giải pháp tốt hơn sẽ được đánh giá cao.

+0

Như đã lưu ý trong câu trả lời được chấp nhận, cách xử lý này hóa ra là sự thay đổi mã trong Sơ đồ cấu trúc. Không cần thay đổi cấu hình IIS. – Mallioch

Trả lời

0

Đây là lỗi và đã được sửa trong thân cây. Nó sẽ được đưa vào bản phát hành 2.6+. Một số phiên bản trước đó của StructureMap sẽ cố gắng viết không cần thiết các cụm động vào đĩa hoặc cố gắng không cần thiết để đọc từ hệ thống tệp.

Nếu bạn đang chạy trong môi trường bị hạn chế không cho phép truy cập vào đường dẫn đầy đủ trong hệ thống tệp (ASP.NET), hãy đảm bảo đặt IgnoreDefaultFile = true khi bạn định cấu hình vùng chứa của mình. Hãy ghi nhớ điều này sẽ vô hiệu hóa khả năng tải cấu hình XML từ StructureMap.config.

+0

Tôi đang sử dụng phiên bản 2.5.3. Tôi đã không xây dựng nó từ nguồn. – Mallioch

2

Đối với những gì đáng giá, tôi gặp phải sự cố tương tự này, nơi tôi có toàn quyền kiểm soát hộp và thậm chí đặt tất cả các quyền để tin cậy hoàn toàn. Với IIS 7.5, tôi đã phải thay đổi danh tính được sử dụng cho nhóm ứng dụng cụ thể thành NetworkService thay vì ApplicationPoolIdentity. Khi tôi khởi động lại IIS, nó đã hoạt động.

+0

Điều này giải quyết được vấn đề cho tôi. –

0

Sử dụng cấu trúc StructureMap 2.5.4 chính thức trên Windows 7 với IIS 7.5 Tôi vẫn gặp sự cố này. Mallioch của sự thay đổi

ObjectFactory.Initialize(x => 
    { 
     x.UseDefaultStructureMapConfigFile = false; 
     x.IgnoreStructureMapConfig = true; 

là cần thiết để giải quyết FileIOPermission ngoại lệ nhưng sau đó tôi nhận được Request for the permission of type ‘System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′ failed. mà tôi giải quyết sử dụng giải pháp của Mike (mà tôi đã tạo ra một step-by-step visualization).

1

FYI, tôi đang sử dụng StructureMap v2.6.1 và gặp sự cố này.

Tôi không sử dụng cấu hình XML, vì vậy tôi đã thêm dòng sau vào mã cấu hình của mình để khắc phục sự cố.

IgnoreStructureMapConfig = true; 
Các vấn đề liên quan