2010-01-12 35 views
8

Tôi đang cố gắng chạy một dự án ASP.NET nhỏ trong thư mục con của lưu trữ của tôi. Tên miền của tôi là www.gorangligorin.com, nhưng tôi muốn chạy ứng dụng của tôi trong www.gorangligorin.com/testmvc. ASP.NET MVC chạy với không có vấn đề ở cấp cao nhất, nhưng không phải trong các thư mục con.Làm thế nào để lưu trữ trang web ASP.NET MVC trong một thư mục con

Máy chủ nói này (dòng 58 là màu đỏ):

Line 56:    ASP.NET to identify an incoming user. 
Line 57:  --> 
Line 58:  <authentication mode="Forms"> 
Line 59:  <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
Line 60:  </authentication> 

tôi có thể làm gì để làm cho ASP.NET MVC làm việc trang web này? Điều này không được lưu trữ trên máy tính của tôi, vì vậy tôi không có quyền truy cập vào cấu hình IIS.

+1

Bạn không thể tạo testmvc một thư mục ảo? –

+0

Tôi đã tạo một thư mục ảo và cuối cùng nó hoạt động. Ít nhất là trang đầu tiên, các trang phụ vẫn không hoạt động. Có vẻ như Định tuyến MVC không hoạt động, bởi vì nó nói "Không thể tìm thấy tài nguyên". Giống như tôi đã cố gắng truy cập vào một thư mục con không tồn tại. Có bất kỳ cài đặt nào khác mà tôi phải thay đổi không? – gligoran

+0

Đã sửa lỗi. Tôi đã thực hiện một lỗi đánh máy ngu ngốc bằng cách viết các tuyến tùy chỉnh và kết quả là không hoạt động :) – gligoran

Trả lời

3

Bạn đã tạo ứng dụng ASP.NET trong IIS cho thư mục này chưa? Nếu không thì ASP.NET cho rằng thư mục gốc của máy chủ của bạn là gốc của ứng dụng của bạn, không phải là thư mục gốc trong thư mục con.

+0

Làm cách nào để thực hiện việc này? – gligoran

+0

Bạn cần truy cập vào IIS. –

+0

Theo cách này, đây là giải pháp. Khi tôi tạo một thư mục ảo, có một hộp kiểm nếu tôi muốn tạo một ứng dụng asp.net trong đó. – gligoran

1

Bạn đã thử làm như sau?

<forms loginUrl="~/testmvc/Account/LogOn" timeout="2880" /> 

Dấu ngã (~) là lối tắt cho thuộc tính HttpRuntime.AppDomainAppVirtualPath, đề cập đến gốc ứng dụng ảo, không phải là gốc của máy chủ web.

HttpRuntime.AppDomainAppVirtualPath 

http://msdn.microsoft.com/en-us/library/system.web.httpruntime.appdomainappvirtualpath.aspx

Ngoài ra, những gì là lên dấu?

Line 58:  <authentication mode="Forms">* 
+0

Điều này không giúp ích gì. Tôi đã thử và không có ~, có hoặc không có/testmvc ở phía trước/account/logon, tôi đã thử tài khoản/logon và testmvc/account/logon (không có/infront). – gligoran

+0

Không thực sự biết dấu hoa thị như thế nào, nhưng nó không nằm trong Web.Config hoặc trên trang lỗi. Tôi đã chỉnh sửa bài đăng gốc. – gligoran

5

Cài đặt của ứng dụng gốc trong IIS có thể ảnh hưởng đến ứng dụng của con bạn. Để ngăn không cho cài đặt gốc lan truyền, hãy chèn mã sau vào web.config gốc của bạn:

Hy vọng điều này sẽ hữu ích.

+0

Tôi đã thử điều đó, nhưng nó thực sự không giúp được gì nhiều. – SwissCoder

+0

Tính năng này hoạt động nếu được thiết lập chính xác ... xem http://stackoverflow.com/a/18217352/1339704 – Soenhay

1

Có Chủ yếu là hai lý do cho vấn đề này:

  1. Nếu bạn đã không được cấu hình ứng dụng asp.net của bạn trong IIS như trong thiết rằng Virtual Directory như một ứng dụng

  2. Hai hay nhiều Web.Config tồn tại trên trang web của bạn. Vì bạn có web.config ở cấp cơ sở và web.config thứ hai trong thư mục con. Vì vậy, chỉ cần loại bỏ web.config nếu nó giống nhau. hoặc trở về 1 và giải quyết nó cho phù hợp trong IIS

    Và kể từ khi bạn thêm một thư mục con từ gốc, tôi sẽ nói rằng bạn phải thay đổi tuyến đường của bạn trong file Global.asax, để xử lý các định tuyến

Url = "testmvc/{controller}/{action}/{id}"

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