2009-05-22 32 views
8

Tôi đã được giao nhiệm vụ thêm chức năng vào trang web IIS 6.0 hiện có. Để làm điều đó, tôi đã xây dựng một ứng dụng ASP.NET MVC. Nó hoạt động tốt khi triển khai như là trang web riêng của nó, nhưng dường như không hoạt động khi tôi cố gắng triển khai nó như là một thư mục ảo trên trang web thực tế mà nó cần để sống.Tại sao thư mục ảo IIS của tôi hoạt động với http: // localhost nhưng không phải http: // computername?

Tên máy chủ là CWEBSERVER và IP là 192.168.1.11. Từ nhìn vào IIS Manager, đây là cấu trúc trang web:

(Default Website) (root) 
    - PRODUCTION (vDir) 
    - CONTENT (not a vDir) 
    - DATAFOLDER (vDir, contains MVC app, just added by me, not working) 

Điều lạ là khi tôi gõ URL sau từ trình duyệt trên máy chủ hoạt động:

http://localhost/DATAFOLDER/account.aspx 
http://127.0.0.1/DATAFOLDER/account.aspx 
http://192.168.1.11/DATAFOLDER/account.aspx 

URL sau (đó là cái mà tôi CẦN làm việc) không:

http://CWEBSERVER/DATAFOLDER/account.aspx 

Lỗi tôi nhận được là "Không thể tìm thấy tài nguyên".

Sau khi nhìn kỹ hơn, tôi nhận ra rằng các yêu cầu tới http://CWEBSERVER sẽ chuyển đến PRODUCTION vDir, nhưng các cuộc gọi tới http://localhost hoặc http://192.168.1.11 sẽ chuyển tới thư mục gốc của trang web. Tôi đoán đây là một cái gì đó thiết lập bởi các nhà thiết kế trang web ban đầu. Tôi không chắc chắn làm thế nào để thay đổi thiết lập này, nhưng tôi không nghĩ rằng tôi có thể thay đổi nó anyway bởi vì có thực sự là một tấn thư mục khác mà sẽ bị ảnh hưởng. Điều khác tôi muốn chỉ ra là: thư mục CONTENT có thể truy cập bằng cách truy cập http://CWEBSERVER/CONTENT. Điều này thực sự kỳ lạ vì tôi nghĩ rằng http://CWEBSERVER chỉ cho tôi vào thư mục gốc, vì vậy tôi sẽ không nghĩ rằng "/ CONTENT" thực sự có thể truy cập vào thư mục CONTENT.

Bây giờ vấn đề của tôi là: làm thế nào để tôi có thể truy cập DATAFOLDER qua http://CWEBSERVER/DATAFOLDER? Tôi sẽ nghĩ rằng tôi chỉ nên đặt DATAFOLDER vDir vào bên trong của vDir PRODUCTION. Tôi đã thử nó, và sử dụng localhost hoặc IP này vẫn truy cập qua:

http://localhost/PRODUCTION/DATAFOLDER/account.aspx 
http://127.0.0.1/PRODUCTION/DATAFOLDER/account.aspx 
http://192.168.1.11/PRODUCTION/DATAFOLDER/account.aspx 

Khi tôi sử dụng CWEBSERVER, tuy nhiên, nó vẫn không:

http://CWEBSERVER/DATAFOLDER/account.aspx 

Các lỗi vẫn "Các tài nguyên không thể là tìm.". Bất cứ ai có thể làm sáng tỏ về điều này? Cụ thể, tôi có các câu hỏi sau:

  1. Làm cách nào để http://localhost chuyển đến thư mục gốc và http://CWEBSERVER chuyển đến PRODUCTION vDir? Tôi có thể thay đổi cài đặt này ở đâu?
  2. Tại sao "http://localhost/PRODUCTION/DATAFOLDER/account.aspx" hoạt động nhưng không "http://CWEBSERVER/DATAFOLDER/account.aspx"?

Câu trả lời được chấp nhận cho câu hỏi này (mà tiền thưởng sẽ được trao cho) sẽ cần để có thể làm cho nó để tôi có thể truy cập http://CWEBSERVER/DATAFOLDER/account.aspx. Cảm ơn!

+0

lỗi gì là bạn nhận được? –

+0

ping cwebserver và sử dụng địa chỉ ip đó trong url của bạn và xem có hoạt động không. điều này sẽ cho bạn biết nếu nó là một vấn đề dns/tường lửa hoặc nếu nó là một vấn đề iis –

Trả lời

11

Rất có thể bạn chỉ liên kết IIS với địa chỉ IP. Đi tới Trình quản lý IIS, sau đó chuyển đến các thuộc tính trên trang web. Sau đó, từ tab Web site, đi đến các thuộc tính.

Thêm danh tính cho giá trị tiêu đề máy chủ đó.

Nếu cần, bạn có thể thêm nhiều liên kết.

cập nhật

Tôi nghĩ rằng tôi biết những gì bạn muốn ngay bây giờ. Từ Trình quản lý IIS, hãy mở rộng trang web mặc định của bạn. Sau đó kích phải vào thư mục Virtual production và chọn "Create Virtual Directory". Gọi đây là DATAFOLDER mới. Sau đó, buộc điều này vào vị trí hiện tại trên hệ thống tệp của bạn.

Tôi thực sự nghĩ rằng bạn cần phải làm sạch điều này một chút. Điều đầu tiên tôi sẽ làm là quyết định mọi thứ thực sự được truy cập như thế nào. Nói cách khác, khi họ nhập http://www.mysite.org/ Điều đó nghĩa là gì? Nếu đó là thư mục PRODUCTION, sau đó Tạo một trang mới và trỏ đến thư mục PRODUCTION, sau đó tạo ứng dụng ảo DATAFOLDER của bạn bên dưới.

+0

Cảm ơn bạn đã tip. Khi tôi xem danh sách danh tính, tất cả những gì tôi thấy là "Mặc định" cho cổng 80. Tôi cũng đã thêm một loạt thông tin khác mà tôi đã tìm thấy. CẢM ƠN SỰ GIÚP ĐỠ CỦA BẠN! TÔI LÀ RẤT TỐT NHẤT CHO BẤT CỨ BẠN CÓ THỂ CHO TÔI. – skb

+0

Cảm ơn bạn đã cập nhật, Chris. Tôi đã cố gắng thêm vDir DATAFOLDER trong vDir PRODUCTION, nhưng vì một lý do nào đó tôi vẫn không thể truy cập nó bằng cách sử dụng www.mysite.org/DATAFOLDER. localhost/PRODUCTION/DATAFOLDER tuy nhiên hoạt động. Tôi nghĩ rằng nó có thể giúp đỡ nếu tôi lần đầu tiên có thể tìm ra lý do tại sao www.mysite.org được chuyển hướng đến PRODUCTION vDir, nhưng localhost đi đến thư mục gốc của trang web. Có lẽ nếu tôi có thể hiểu được sự khác biệt này, tôi có thể thấy điều gì đang khiến mọi thứ vẫn không hoạt động. Ý tưởng nào? – skb

+0

Bạn thực sự nên bắt đầu lại với các ràng buộc của bạn. Có vẻ như một thư mục ảo cho PRODUCTION đã được thiết lập khi nó không nên có. Bắt đầu với một trang web mới, cung cấp cho trang web này một liên kết www.mysite.org và trỏ nó vào thư mục SẢN XUẤT của bạn. Sau đó, thêm một thư mục ảo bên dưới nó trỏ đến datafolder của bạn. – NotMe

0

add '192.168.1.11 cwebserver' đến% Windir%/system32/drivers/etc/hosts

+1

Cảm ơn, nhưng đây không phải là vấn đề. Nó cũng cần được truy cập từ nhiều máy khác. – skb

1

Đỗ như Chris Lively nói và bổ sung thêm các ràng buộc đối với tên máy chủ khác hoặc thêm một địa điểm mới với các thiết lập cho cùng một nội dung. IIS đáp ứng bằng cách xem thông tin tiêu đề máy chủ và nếu bạn chỉ có Trang web mặc định với một ràng buộc duy nhất tới cổng 80, nó sẽ không xử lý tất cả các tiêu đề có thể.

Nếu tên bên trong công ty của bạn như tên máy hoặc mục nhập DNS nội bộ, bạn có thể lấy đi bằng cách để cho ràng buộc mặc định thực hiện công việc. Nếu nó không hoạt động trong thử nghiệm, hãy thêm một ràng buộc cho tình huống đó (CWEBSERVER hoặc mysite.org). Kiểm tra nó có và không có www nếu bạn quan tâm đến nó hoạt động theo cả hai cách.

Không có nhiều nhược điểm khi thêm nhiều "trang web" trong IIS cho cùng một nội dung. Ví dụ bạn có thể có

mysite.org chỉ vào /PRODUCTION/DATAFOLDER/index.html

marketingsite.com chỉ vào /PRODUCTION/DATAFOLDER/index.html

Sau đó, bạn có thể làm những việc như có cài đặt SSL khác nhau và v.v. Trên máy chủ web của tôi không có gì truy cập Trang Web Mặc Định trừ khi có sự cố (như tôi đã thiết lập một địa chỉ IP bên ngoài mới và không cần sửa đổi các ràng buộc).

Chọn chất độc của bạn nhưng về cơ bản bạn chỉ cần thêm cài đặt trong IIS cho đến khi nó xử lý tất cả các địa chỉ có thể theo cách bạn muốn.

+0

Tôi đang cố gắng làm điều ngược lại với những gì bạn đề cập đến. Tôi không muốn nhiều "trang web" cho cùng một nội dung, tôi muốn nội dung khác nhau "được hợp nhất" vào một trang web. Tôi có trang web mặc định. Trang web này có một vDir PRODUCTION mà "www.mysite.org" trỏ tới (BTW, tôi không thể tìm ra cách vDir này kết thúc bằng "root" của "www.mysite.org" nhưng đối với "localhost" thì đó là không, tôi không thấy cài đặt cho vDir hoặc trang web này). Tôi không quan tâm đến localhost, tôi chỉ cần có mysite.org/DATAFOLDER trỏ đến một vDir riêng biệt. Điều này có thể không? – skb

5

Mặc dù tôi chưa xem hết danh sách câu trả lời, tôi đã xem xét giải pháp này theo cách sau. Liên kết trang web của tôi đang hoạt động với localhost nhưng không hoạt động với tên IP hoặc máy tính. Nó không có bất kỳ lỗi nào, đặc biệt là với GREAT IE (****).

Để khắc phục sự cố này, tôi đã thêm trang web này vào SITES TRUSTED của IE.

Có thể giúp giảm bớt sự thất vọng!

+0

Có, nó dừng lại nhiều thất vọng! cảm ơn! – DrCord

2

Tôi đã gặp sự cố tương tự đã được giải quyết bằng cách gán IP tĩnh cho máy chủ IIS tạm thời của tôi. (Tôi đã gán cùng một địa chỉ IP làm địa chỉ IP được phân bổ động, là 192.168.56.101.)

Có thể giúp một người nào đó.

Đồng thời kiểm tra this để biết cài đặt tường lửa.

1

Đối với tôi đó là một vấn đề tường lửa:

  1. Go to: Control Panel -> Windows Firewall -> Cho phép một chương trình hoặc Tính năng Thông qua Windows Firewall

  2. Di chuyển đến dưới cùng của danh sách và chọn hộp kiểm cho các dịch vụ www (http).

  3. Lưu

Bây giờ tôi có thể truy cập http://computername.domain tên

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