2013-09-22 29 views
12

Tôi đang gặp sự cố với các mẫu phong cách của mình sau khi triển khai lên IIS. Tôi đã tạo ra một giải pháp đơn giản để chứng minh vấn đề của mình.Gói kiểu không hoạt động sau khi triển khai IIS (MVC 4)

Tôi đã tạo một dự án thử nghiệm đơn giản (VS 2012, MVC 4) với một bộ điều khiển đơn và một chế độ xem có chứa chuỗi "Hello World".

tôi đã tạo ra một (thử nghiệm) CSS trong thư mục nội dung với màu sắc đơn giản đơn giản thay đổi

Content\helloWorldCss\helloWorldStyle.css 

Sau đó, tôi đã chỉnh sửa BundleConfig.cs tôi lớp và thêm đường dẫn đến CSS của tôi như một bó mới:

  bundles.Add(new StyleBundle("~/Content/helloWorldCss").Include("~/Content/helloWorldCss/helloWorldStyle.css")); 

Sau đó, tôi đã thêm gói mới của tôi _Layout.cshtml:

@Styles.Render("~/Content/helloWorldCss") 

Khi tôi chạy ứng dụng của mình qua VS (hoặc Trình kiểm tra trang), CSS của tôi đang được áp dụng thành công và mọi thứ có vẻ ổn. Tuy nhiên, khi tôi xuất bản/triển khai dự án của mình lên IIS (thông qua VS), tôi có thể xem HTML của mình nhưng CSS của tôi không được áp dụng. Các tập tin sau đây tồn tại sau khi triển khai:

Content\helloWorldCss\helloWorldStyle.css 

Điều gì thực sự tôi bối rối là khi tôi thay đổi _Layout.cshtml của tôi và thêm một "thường xuyên" ref đến CSS cùng thay vì sử dụng các gói ref, CSS được áp dụng sau khi xuất bản mà không có bất kỳ vấn đề nào.

<link href="@Url.Content("~/Content/helloWorldCss/helloWorldStyle.css")" rel="stylesheet" type="text/css" />* 

Tôi sẽ đánh giá cao bất kỳ trợ giúp và lời khuyên nào về điều này.

Trả lời

12

Tôi nghĩ bạn đã có xung đột tên tại đây. ASP.NET MVC sẽ tạo một tệp trên http://example.org/Content/helloWorldCss sau khi rút gọn và bạn đã có một thư mục có cùng đường dẫn. Bạn có thể thử lại sau khi đổi tên gói của mình không?

BundleConfig.cs:

bundles.Add(new StyleBundle("~/Content/helloWorld").Include("~/Content/helloWorldCss/helloWorldStyle.css")); 

_Layout.cshtml:

@Styles.Render("~/Content/helloWorld") 
+0

Bạn là chính xác. Đây thực sự là vấn đề. Cảm ơn! – Omri

+0

ký hiệu '~' ở đây là nguồn gây nhầm lẫn chính. Dấu hiệu là cần thiết để xác định gói. Điều này khiến tôi nghĩ rằng đó phải là đường dẫn thư mục KHÔNG PHẢI là. :) Cảm ơn!! Giúp tôi. – mrsrizan

6

Đây là những gì tôi làm. IIS Config> Xác thực> RightClickOn Anonymous Auth> Nhấn Edit> Check hồ bơi ứng dụng sắc

IIS Config>Authentication>RightClickOn Anonymous Auth>Click Edit> Check Application pool identity

+0

Đây là cách khắc phục dễ nhất và câu trả lời hay nhất. Cảm ơn! –

+0

Khắc phục tuyệt vời! Tại sao không được thiết lập theo cách đó theo mặc định? Bạn nên luôn sử dụng IIS Application Pools để bảo mật. Cảm ơn bạn!! –

0

Khi bạn sử dụng VS xuất bản đến một máy chủ thử nghiệm, nó sử dụng DefaultAppPool. Đối với phong cách và SimpleMembership để làm việc bạn cần:

  1. Cài đặt ASP.NET 4.0 trên máy chủ của bạn. cmd - cd C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Nhập aspnet_regiis.exe -ir

  2. Thêm hồ bơi ứng dụng ASP.NET 4.0 trong IIS.

  3. Đặt trang web của bạn để sử dụng ASP.NET 4.0 làm ứng dụng nhóm.

  4. Thêm đăng nhập bảo mật ASP.NET 4.0 trong SQL Server và cung cấp vai trò dbcreate.

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