2012-01-04 29 views
106

Có cách nào để tạo một thư mục ảo trong IIS express không? Tôi biết rằng Cassini không thể làm điều này và nó sẽ là tốt đẹp để có thể làm điều này mà không cần sử dụng một phiên bản đầy đủ của IIS.Tạo các thư mục ảo trong IIS express

Tôi đã có nó cho đến nay mà tôi có thể duyệt đến ứng dụng của tôi tại địa phương trong IIS thể hiện như thế này:

http://localhost:1132/

Những gì tôi muốn làm là tạo một thư mục ảo gọi là "OffSiteStuff" và trỏ nó đến một số vị trí trên ổ C của tôi, giống như "c: \ offsitestuff" và sau đó duyệt đến các mục trong thư mục đó như thế này:

http://localhost:1132/OffSiteStuff/UserUploadedImage.jpg

tôi biết tôi có thể làm điều này với một thư mục trong tôi trang web và vẫn sử dụng IIS Express, hoặc, cho rằng vấn đề đồng bằng cũ Cassini, nhưng thư mục này sẽ lưu trữ hình ảnh được tải lên bởi người dùng và tôi thực sự không muốn có những hình ảnh này trộn lẫn với các tập tin ứng dụng.

Giải pháp "go big" khác là triển khai trang web vào một trường hợp Server 2008 IIS 7.5 đầy đủ mỗi khi tôi muốn gỡ lỗi các tính năng sử dụng nội dung ngoại vi, nhưng điều đó cũng hơi cồng kềnh.

Có cách nào tôi có thể thực hiện việc này trong phần tử cấu hình web <System.WebServer /> không?

+4

Đối với Visual Studio 2015, https: //mikedice417.wordpress.com/2015/09/13/vs-2015-và-bạn-phải-chỉ định-localhost-cho-the-server-name/work. Tệp 'applicationHost.config' nằm trong thư mục gốc của dự án:' $ {PROJECT} \. Vs \ config \ applicationHost.config'. – Matt

+0

Ở đây có một câu trả lời có thể giúp bạn: [https://stackoverflow.com/a/46260607/2472664](https://stackoverflow.com/a/46260607/2472664) –

Trả lời

121

Cấu hình IIS Express được quản lý bởi applicationhost.config.
Bạn có thể tìm thấy nó trong

Users \ username <> \ Documents \ IISExpress \ thư mục config.

Bên trong, bạn có thể tìm phần trang web chứa một phần cho mỗi trang web được cấu hình IIS Express.

Add (hoặc sửa đổi) một phần trang web như thế này:

<site name="WebSiteWithVirtualDirectory" id="20"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="c:\temp\website1" /> 
    </application> 
    <application path="/OffSiteStuff" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="d:\temp\SubFolderApp" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:1132:localhost" /> 
    </bindings> 
</site> 

Thực tế bạn cần phải thêm một thẻ ứng dụng mới trong trang web của bạn cho mỗi thư mục ảo. Bạn nhận được rất nhiều sự linh hoạt bởi vì bạn có thể thiết lập cấu hình khác nhau cho các thư mục ảo (ví dụ như một phiên bản .Net Framework khác nhau)

EDIT Nhờ Fevzi Apaydın để trỏ đến một giải pháp thanh lịch hơn.

Bạn có thể đạt được kết quả tương tự bằng cách thêm một hoặc virtualDirectory nhiều thẻ để thẻ Application:

<site name="WebSiteWithVirtualDirectory" id="20"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="c:\temp\website1" /> 
    <virtualDirectory path="/OffSiteStuff" physicalPath="d:\temp\SubFolderApp" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:1132:localhost" /> 
    </bindings> 
</site> 

tham khảo:

+0

Sau khi thêm từng thẻ ứng dụng cho mỗi Virtual thư mục tôi không thể chạy ứng dụng "offsitestuff". Ví dụ: iisexpress/site: WebSiteWithVirtualDirectory - chạy ứng dụng đầu tiên từ đường dẫn "C: \ temp \ website1". Làm cách nào tôi có thể chạy ứng dụng thứ 2 chứa đường dẫn "d: \ temp \ SubFolderApp" – Velu

+0

Trong phần liên kết bạn thấy url và cổng được sử dụng để truy cập vào thư mục gốc của trang web của bạn. Vì vậy: http: // localhost: 1132 là url cho ứng dụng web được cài đặt trong c: \ temp \ website1 http: // localhost: 1132/OffSiteStuff là url cho ứng dụng web được cài đặt trong d: \ temp \ SubFolderApp . –

+0

Bất cứ ai biết nếu/làm thế nào tôi có thể cấu hình các thiết lập riêng cho từng dự án (vì vậy tôi có thể kiểm tra trong cấu hình)? Cảm ơn –

0

Tôi có một cái gì đó khác, các tập tin chính nó, nơi inaccess ible trong một môi trường SBS.

Xóa các tệp trong thư mục cấu hình (nếu bạn không thể mở chúng!) và thay thế chúng bằng một bản sao của thư mục trên máy tính cục bộ của bạn.

cố định nó cho tôi :)

+0

Tệp trong Người dùng \ \ Documents \ IISExpress \ config được bảo vệ theo người dùng. Có thể bạn đã cố gắng chỉnh sửa nó với một người dùng khác. Vì vậy, để chỉnh sửa nó, bạn cần phải chạy Notepad (hoặc trình soạn thảo của bạn) trong chế độ quản trị. Bằng cách này bạn có thể sửa đổi nó. Hoặc xóa và sao chép giống như bạn đã làm :-) –

80

@ aprroach Be.St. là đúng, nhưng không đầy đủ. Tôi chỉ sao chép lời giải thích của anh ấy bằng cách sửa phần không chính xác.

Cấu hình IIS Express được quản lý bởi applicationhost.config.
Bạn có thể tìm thấy nó trong

Users \ username <> \ Documents \ IISExpress \ thư mục config.

Bên trong, bạn có thể tìm phần trang web chứa một phần cho mỗi trang web được cấu hình IIS Express.

Add (hoặc sửa đổi) một phần trang web như thế này:

<site name="WebSiteWithVirtualDirectory" id="20"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="c:\temp\website1" /> 
    <virtualDirectory path="/OffSiteStuff" physicalPath="d:\temp\SubFolderApp" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:1132:localhost" /> 
    </bindings> 
</site> 

Thay vì thêm một khối ứng dụng mới, bạn nên chỉ cần thêm một yếu tố virtualDirectory mới đến các yếu tố ứng dụng mẹ.

Edit - Visual Studio 2015

Nếu bạn đang tìm kiếm các tập tin applicationHost.config và bạn đang sử dụng VS2015 bạn sẽ tìm thấy nó trong:

[solution_directory]/.vs/config/applicationHost.config

+3

Có cách nào để áp dụng điều này trong dự án Visual Studio không? Trong môi trường đa nhà phát triển, nếu ai đó kiểm tra mã trên máy của họ, thì IIS Express cục bộ của họ sẽ không được cấu hình với thư mục ảo và gây ra lỗi thời gian chạy không? – ahillier88

+4

Trong Visual Studio 2015, tệp cấu hình IIS được lưu trữ trong thư mục giải pháp, trong một thư mục có tên .vs/config, vì vậy bạn có thể kiểm tra nó vào điều khiển nguồn nếu bạn muốn. –

+0

Vì vậy, nhiều câu trả lời không trả lời lũ lụt google cho câu hỏi này liên quan đến VS 2012. Công trình này !!!! –

6

trong VS2013 tôi đã làm điều này trong các bước sau:

1.Right chuột lên dự án ứng dụng web và nhấn Thuộc tính

2.View "Web" tab của trang Thuộc tính

Servers 3.Under, với "IIS Express" là lựa chọn mặc định của danh sách thả xuống, trong "Url dự án" thay đổi url bằng cách sử dụng số cổng thành số phù hợp với bạn. Ví dụ, tôi đã xóa số cổng và thêm "/ MVCDemo4" sau localhost.

4.Nhấp vào nút "Tạo thư mục ảo".

5.Run dự án của bạn và địa chỉ mới sẽ được sử dụng

+0

Điều này không cho phép bạn định cấu hình đường dẫn vật lý. –

0

Nếu bạn đang sử dụng Visual Studio 2013 (có thể yêu cầu phiên bản Pro trở lên), tôi có thể thêm thư mục ảo vào trang web IIS Express (dựa trên tệp) bằng cách nhấp chuột phải vào trang web trong Solution Explorer và nhấp vào Thêm> Thư mục ảo mới. Điều này đã thêm một mục vào tệp applicationhost.config như với các phương thức thủ công được mô tả ở đây.

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