2008-11-27 25 views
5

Tôi thấy một cái gì đó về việc cần phải có lắp ráp có sẵn cho loại đối số đầu tiên được chuyển đến hàm. Tôi nghĩ nó là, tôi không thể tìm ra những gì tôi đang mất tích.Tại sao System.Web.Hosting.ApplicationHost.CreateApplicationHost ném System.IO.FileNotFoundException?

Mã này nằm trong một dịch vụ. Tôi đã chạy dịch vụ theo tài khoản người dùng 'DỊCH VỤ MẠNG', khi tôi thay đổi tài khoản thành tài khoản của phiên tôi đã đăng nhập với nó hoạt động tốt. Nhưng, sự khác biệt là gì và làm thế nào tôi có thể làm cho nó hoạt động cho người dùng NETWORK SERVICES.

Trả lời

-3

Cuối cùng tôi đã tìm thấy câu trả lời: có vẻ như loại được cung cấp cho ApplicationHost.CreateApplicationHost() phải nằm trong một hội đồng nằm trong GAC. Đơn giản và ngu ngốc :)

+0

Làm mát. Bạn đã tìm thấy điều này trong một số tài liệu tôi có thể xem xét ... hoặc là nó bằng thử và sai? –

+3

được bình chọn bởi vì lắp ráp không cần phải có trong GAC – Simon

+0

Thật vậy, không cần thiết phải lắp ráp vào GAC. Điều này phải làm với Assembly binding.Đặt nhật ký kết hợp và bạn có thể thấy chính xác vị trí của nó –

0

Dịch vụ mạng là tài khoản được tích hợp sẵn có quyền truy cập rất hạn chế (vì lý do chính đáng) vào tài nguyên. Bạn có lẽ không nên thay đổi nó bởi vì bạn sẽ mở trang web của bạn đến các lỗ hổng tiềm năng khác.

Nếu bạn hoàn toàn phải, hãy xem here để biết cách định cấu hình để có quyền truy cập vào các tài nguyên khác.

0

Tôi nghĩ điều này liên quan chặt chẽ hơn đến tài khoản Dịch vụ mạng hoặc Mã bảo mật truy cập và không liên quan gì đến GAC. Tôi đang sử dụng CreateApplicationHost() để tạo một máy chủ ASP.Net trong một dự án MS Test và nó hoạt động như một nhà vô địch. Kiểu mà tôi sử dụng không nằm trong một assembly được triển khai tới GAC hoặc thậm chí được đặt tên mạnh (Nó được định nghĩa trong TestProject).

Bạn phải yêu những loại mâu thuẫn này ... nó giữ cho cuộc sống thú vị.

1

Tôi cũng gặp sự cố này. Tôi nghĩ rằng thời gian chạy là cố gắng để tải lắp ráp có chứa các loại thông qua như là đối số đầu tiên để CreateApplicationHost và nó không tìm thấy nó

Vì một số lý do kỳ lạ nó làm việc khi tôi tạo một thư mục bin trong thư mục vật lý của tôi (đối số thứ ba) chứa exe hoặc assembly có chứa kiểu mà nó đang cố tải.

Tôi không biết tại sao nó không tìm trong thư mục hoạt động trước tiên ...

4

sao chép tệp nhị phân vào thư mục bin của ứng dụng web của bạn cũng sẽ khắc phục điều này.

2

Bằng cách này, this trang có thêm một ít thông tin về chủ đề này và cách có thể để khắc phục sự cố của GAC ​​so với việc sao chép lắp ráp của bạn vào thư mục bin. Trang này là một vài năm tuổi vào thời điểm này nhưng nó vẫn có vẻ có liên quan.

0

tôi không thể có được điều này để làm việc hoặc trong .NET2 trên Windows 2008 (64-bit, nhưng tôi không nghĩ rằng mattered đó). Nó hoạt động khi người dùng của tôi là quản trị viên cục bộ, nhưng tôi không muốn các dịch vụ của mình chạy với các đặc quyền nâng cao. Tôi tìm kiếm cao và thấp và cuối cùng đã tìm ra (mà không cần thêm assembly vào GAC, cũng không tốt cho tôi): Tạo một tệp web.config cho trang web tự lưu trữ của tôi để thiết lập thư mục bin để thăm dò. Trước khi tôi không có tệp web.config vì các trang web của tôi đều được xử lý trong mã. Đây là tệp cấu hình của tôi bây giờ trông giống như:

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="bin"/> 
    </assemblyBinding> 
    </runtime> 
</configuration> 
Các vấn đề liên quan