2014-04-08 22 views
5

Tôi đang sử dụng Triển khai Web (từ VS2013) để xuất bản trang ASP.NET MVC lên IIS 7.5.Triển khai Web xóa cấu hình tùy chỉnh trang web IIS

Tôi đã thêm một số quy tắc viết lại URL và tiêu đề phản hồi HTTP tùy chỉnh thông qua trình quản lý IIS.

Vấn đề là mỗi khi tôi triển khai phiên bản mới của trang web, cấu hình bổ sung này sẽ bị xóa.

Đây có phải là hành vi mong đợi hoặc có vấn đề gì không? Làm cách nào để giữ các cài đặt tùy chỉnh này trên từng triển khai?

CẬP NHẬT

Vì vậy, tôi hiểu tôi cần phải đưa những thay đổi trong web.config. Tôi đang cố gắng để đặt chúng trong Web.Release.config nhưng nó không được thêm vào triển khai web.config. Tôi đoán tôi thiếu một số quy tắc XDT:Transform.

Đây là những gì tôi có trong số Web.Release.config (có, hồ sơ xuất bản đang sử dụng Cấu hình phát hành này).

<configuration> 
    <!-- some other stuff --> 
    <system.webServer> 
     <rewrite> 
      <rules> 
      <rule name="Redirect to www" patternSyntax="Wildcard" stopProcessing="true"> 
       <match url="*" /> 
       <conditions> 
       <add input="{HTTP_HOST}" pattern="mydomain.com" /> 
       </conditions> 
       <action type="Redirect" url="http://www.mydomain.com/{R:0}" /> 
      </rule> 
      </rules> 
     </rewrite> 
     </system.webServer> 
</configuration> 
+1

Những thay đổi này đưa vào web.config được triển khai? Nếu bạn kiểm tra sự khác biệt giữa web.config địa phương của bạn và triển khai (sau khi thay đổi đã được thực hiện), có cái gì đó khác nhau giữa các tập tin? – NoLifeKing

+0

@NoLifeKing Không, như tôi đã nói, những thay đổi đã được thực hiện thông qua trình quản lý IIS, chứ không phải web.config. Tôi có cần phải thực hiện chúng thông qua web.config không? – emzero

+0

Các thay đổi được thực hiện trong Trình quản lý IIS sẽ thay đổi web.config được triển khai bằng các giá trị mới. Tất nhiên, có những ngoại lệ đối với những gì được thay đổi, không phải mọi thứ được đưa vào web.config. – NoLifeKing

Trả lời

0

Ok vì vậy tôi hiểu rằng tôi cần phải thêm cấu hình tùy chỉnh này trong web.config bằng cách sử dụng XDT:Transform.

tôi thêm này vào Web.Release.config và nó làm việc:

<system.webServer> 
    <rewrite xdt:Transform="Insert"> 
     <rules> 
     <rule name="Redirect to www" patternSyntax="Wildcard" stopProcessing="true"> 
      <match url="*" /> 
      <conditions> 
      <add input="{HTTP_HOST}" pattern="mydomain.com" /> 
      </conditions> 
      <action type="Redirect" url="http://www.mydomain.com/{R:0}" /> 
     </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
2

Biến hành động xây dựng của web.config thành Không. Điều đó sẽ ngăn không cho tệp được triển khai mỗi khi bạn xuất bản.

Sửa

Để chèn toàn bộ phần vào một web.config từ web.release.config, bạn cần xdt: Biến đổi = "Insert" thêm như sau:

<system.webServer xdt:Transform="Insert"> 
     <rewrite> 
      <rules> 
      <rule name="Redirect to www" patternSyntax="Wildcard" stopProcessing="true"> 
       <match url="*" /> 
       <conditions> 
       <add input="{HTTP_HOST}" pattern="mydomain.com" /> 
       </conditions> 
       <action type="Redirect" url="http://www.mydomain.com/{R:0}" /> 
      </rule> 
      </rules> 
     </rewrite> 
     </system.webServer> 
+0

Nhưng tôi muốn triển khai tệp web.config (tôi có thể đã thêm gì đó). Vì vậy, có vẻ như cách duy nhất là thêm cấu hình tùy chỉnh trực tiếp trên web.config phải không? – emzero

+0

Xuất bản sẽ luôn ghi đè lên web.config đích. Không có hợp nhất hai tệp. Bạn sẽ phải có những thay đổi ở đâu đó trên một web.config cục bộ (primary hoặc .Release.config) để cho việc xuất bản đẩy tất cả các thay đổi với các thiết lập máy chủ chính xác. – Josh

+0

Tốt cho đến bây giờ. Tôi sẽ đặt các cấu hình đó trong Web.Release.config. Cảm ơn. – emzero

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