Thay đổi đường dẫn vật lý trên IIS thông qua appcmd không được kích hoạt


9

Chúng tôi đã gặp một vấn đề trên IIS 7.5, nơi chúng tôi có một hệ thống triển khai đơn giản bao gồm:

Tạo một tệp zip của webroot mới, bao gồm ba thư mục:

Api
Site
Manager

Điều này được giải nén vào một thư mục mới (giả sử chúng ta gọi nó là "SITE_REV1") và chứa một tập lệnh gọi ra đoạn sau (một cho mỗi webroot):

C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"

Điều này thường làm việc, trong 9/10 lần. Trong một số trường hợp, webroot dường như được cập nhật chính xác (nếu tôi kiểm tra các cài đặt cơ bản trong Trình quản lý IIS, đường dẫn có vẻ chính xác), nhưng trang web đang chạy thực sự được chỉ đến vị trí cũ. Cách duy nhất chúng tôi đã quản lý để "sửa nó", là chạy lại thiết lập IIS. Nó không đủ để tái chế nhóm ứng dụng trong câu hỏi.

Đôi khi dường như thậm chí cần thiết để thực hiện khởi động lại, nhưng tôi không chắc chắn 100% đó là chính xác (không phải lúc nào tôi cũng tự khắc phục được sự cố).

Tôi đã viết lại tập lệnh bằng Powershell và mô-đun Quản trị web, hy vọng rằng có một trục trặc trong appcmd, nhưng vấn đề tương tự xảy ra.

Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"

Có ai có kinh nghiệm như thế này? Có ai có manh mối về những gì đang xảy ra không, và tôi có thể thử và làm gì để ngăn chặn vấn đề này? Thực hiện thiết lập lại IIS không thực sự là một lựa chọn tốt cho chúng tôi, vì điều đó sẽ ảnh hưởng đến tất cả các trang web trên máy chủ mỗi khi chúng tôi thử và triển khai các thay đổi trên một trang web.

EDIT: Chúng tôi đã xác định rằng bắt đầu / dừng trang web (KHÔNG phải nhóm ứng dụng) trong IIS Manager sẽ giải quyết đường dẫn vật lý sai lầm, nhưng nếu tôi dừng trang web bằng appcmd, hãy thay đổi đường dẫn vật lý, sau đó khởi động nó, tôi vẫn bị những vấn đề tương tự Tôi đang trống ...


1
Đối với những thời điểm khi nó không hoạt động, có thể các yêu cầu là những yêu cầu hiện có đang được phục vụ bởi nhóm ứng dụng cũ thông qua vòng xoay chồng chéo ? Không chắc chắn về các yêu cầu thời gian hoạt động của trang web của bạn, nhưng bạn có thể thử vô hiệu hóa xoay vòng chồng chéo và bao gồm lệnh tái chế nhóm ứng dụng trong tập lệnh triển khai của bạn.
khám phá

Không, tất cả các yêu cầu tiếp theo được phục vụ từ webroot cũ, thậm chí một tái chế ứng dụng sẽ tải lại ứng dụng từ root cũ. Thiết lập lại IIS là cách duy nhất chúng tôi đã quản lý để khôi phục nó. Giống như applicationhost.config được cập nhật (vì trình quản lý IIS hiển thị đường dẫn chính xác), nhưng bản thân máy chủ IIS hoạt động từ cấu hình trước đó ...
jishi

Tôi không thể tìm thấy đề cập đến nó trong apphost.config, vì vậy tôi cho rằng đó là "sai" mặc định?
jishi

OK, đã suy nghĩ nếu disallowOverlickingRotation = true, thì nhóm ứng dụng cũ có thể không bị tắt do một luồng chạy dài hoặc một cái gì đó. Đó là lý do tại sao IIS Reset sẽ được yêu cầu xóa hoàn toàn. Câu hỏi thú vị - sẽ tò mò để xem những câu trả lời hiển thị.
khám phá

Hãy nhớ rằng tái chế nhóm ứng dụng không giống như dừng / bắt đầu. Bạn đã thử phương pháp này? Hãy nhớ rằng, điều này sẽ giết tất cả các kết nối hiện tại và làm cho trang web không khả dụng (lỗi 500) cho đến khi nhóm ứng dụng được khởi động lại.
John Homer

Câu trả lời:


0

Việc thay đổi đường dẫn vật lý từ IIS Manager có hoạt động chính xác và ngay lập tức không?

Bạn có thể muốn thử lệnh sau. Cú pháp khác nhau, nên có cùng kết quả nhưng có thể nó hoạt động hơi khác bên trong khiến IIS nhận các thay đổi (tốt hơn):

C:\Windows\System32\inetsrv\appcmd.exe set app "www.site.com/" -[path='/'].physicalPath:"SITE_REV1\Site"


AFAIK chúng tôi chưa bao giờ có bất kỳ vấn đề nào khi chúng tôi thay đổi thủ công trong trình quản lý IIS, chỉ theo chương trình.
jishi

0

Một tái chế nhóm ứng dụng nên đủ cho mỗi cơ sở trang web. Đây là những quá trình độc lập. Quá thường xuyên các bài viết và quy trình quảng bá bằng cách sử dụng iisreset. Việc dừng / bắt đầu nhóm ứng dụng cho một trang web có phải là một tùy chọn không? Đây có phải là một giải pháp máy chủ duy nhất và bạn đang cố gắng giảm thiểu thời gian chết cho trang web? Có một tùy chọn để vô hiệu hóa tái chế khi thay đổi cấu hình. Sau đó, bạn có thể tự tái chế. Khi sự cố xảy ra, những gì được liệt kê trong applicationhost.config?


Tôi không chắc chắn 100%, nhưng vì Trình quản lý IIS liệt kê đường dẫn mới, tôi cho rằng applicationhost.config đã được cập nhật. Tuy nhiên, khi quá trình tái chế, nó dường như không sử dụng các giá trị được cấu hình mới. Vì điều này chỉ xảy ra đôi khi rất khó để khắc phục sự cố kịp thời.
jishi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.