2013-06-03 22 views
11

Xin chào Tôi đang cố gắng gộp các tập lệnh của mình cho ứng dụng của mình. Gỡ lỗi của tôi đang hoạt động và nếu tôi xuất bản với Web.debug, mọi thứ đều hoạt động tốt. Nhưng khi tôi xuất bản với Web.releas, các tập lệnh của tôi không tải. Mọi thứ hoạt động cục bộ nó chỉ dừng lại khi tôi xuất bản lên Azure từ VS2012. Đây là cách tôi tạo nhóm của mình.Kết hợp với MVC4 không hoạt động sau khi tôi xuất bản lên azure

namespace BAT.App_Start 
{ 
    public class BundleConfig 
    { 
    public static void RegisterBundles(BundleCollection bundles) 
    { 
     //BundleTable.EnableOptimizations = true; 

     bundles.Add(new ScriptBundle("~/Content/MasterCss") 
       .Include("~/Content/bootstrap.css") 
       .Include("~/Content/bootstrap-responsive.css") 
       .Include("~/Content/CSS/site.css")); 

     bundles.Add(new ScriptBundle("~/Scripts/MasterScripts") 
       .Include("~/Scripts/jquery-{version}.js") 
       .Include("~/Scripts/bootstrap.js")); 

     bundles.Add(new ScriptBundle("~/Scripts/Validation") 
       .Include("~/Scripts/jquery.validate.js") 
       .Include("~/Scripts/jquery.validate.unobtrusive.js")); 
     } 
    } 
} 

Dòng un-nhận xét phá vỡ debug xây dựng

Đây là cách bố trí của tôi, nơi tôi gọi là bó

@using System.Web.Optimization 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>@ViewBag.Title Business Analysis Tool </title> 

    @Styles.Render("~/Content/MasterCss") 
</head> 

<body> 
    <div class="container-fluid"> 
     <div class="row-fluid"> @RenderPage("~/Views/Shared/_Header.cshtml") </div> 
     <div class="row-fluid"> @RenderBody() </div> 
     <div class="row-fluid"> @RenderPage("~/Views/Shared/_Footer.cshtml") </div> 
    </div> 
    @Scripts.Render("~/Scripts/MasterScripts")  
    @RenderSection("scriptholder", false) 
</body> 
</html> 

Đây là Release.Config tôi

<?xml version="1.0"?> 
    <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.web> 
     <compilation xdt:Transform="RemoveAttributes(debug)" /> 
    </system.web> 
    </configuration> 

đây là một liên kết đến lỗi khi tôi kiểm tra tập lệnh được nhóm với CTRL + U trên trang http://bat.azurewebsites.net/Content/MasterCss?v=htASNz4hgFFA40tt0CVZdpwQudN8ZW4429UjRQZQJms1

Dường như có liên quan đến việc rút gọn. Tôi đã làm theo một số hướng dẫn và đã đọc các bài đăng khác ở đây nhưng các giải pháp của họ không hoạt động cho tôi

+0

Xin chào Jeff. Tôi dường như đang ở trong tình trạng tương tự. Bạn có bất kỳ thông tin phản hồi về điều này? – Ronald

+0

Hi no I havn't có bất kỳ may mắn nào được nêu ra với nó. Để chỉ nhận được một cái gì đó làm việc tôi sử dụng xây dựng gỡ lỗi để xuất bản để Azure. Đó là làm việc cho tôi bởi vì tôi không có nhiều kịch bản nhưng tôi thực sự muốn có được gói làm việc –

+0

Ok, tôi sẽ cho bạn biết nếu tôi tìm ra một cái gì đó – Ronald

Trả lời

5

Những sai lầm nhỏ giết chết tôi, tôi đã gộp gói css của tôi thành một gói kịch bản chứ không phải một gói kiểu.

Tôi đã làm rất nhiều để thử khắc phục điều này bao gồm thiết lập kiểm soát nguồn và xây dựng cấu hình. Dự án của tôi đã được thiết lập để sử dụng git cho tfs và mọi thứ.

+0

Tương tự ở đây ...... – Idrees

2

Tôi gặp sự cố tương tự khi xuất bản lên Azure. Lỗi thực sự đã cho tôi biết rằng tệp jQuery bị định dạng sai. ==> tệp được rút gọn.

Các tập lệnh khác không thành công vì jQuery không được xác định.

Tôi đã sử dụng jQuery 2.0.0 (từ NuGet). Sau khi nâng cấp ngày hôm nay lên 2.0.2 (từ NuGet), tôi đã có thể xuất bản thành công lên Azure dưới cấu hình Phát hành.

Không chắc chắn nếu điều này được liên kết với vấn đề cụ thể của bạn, nhưng nó đã giải quyết được vấn đề của tôi.

+0

Xin lỗi vì sự cố gắng này nhưng điều đó không hiệu quả đối với tôi. Nhưng cảm ơn cho câu trả lời –

4

Trong BundleConfig.cs tôi đã có sau:

 bundles.Add(new StyleBundle("~/Content/css").Include(
      "~/Content/css/bootstrap.css", 
      "~/Content/css/bootstrap-responsive.css", 
      "~/Content/css/site.css")); 

tôi thực sự thực sự đã phải sử dụng:

bundles.Add(new StyleBundle("~/Styles/css").Include(
      "~/Content/css/bootstrap.css", 
      "~/Content/css/bootstrap-responsive.css", 
      "~/Content/css/site.css")); 

Tôi cũng đã phải cập nhật các tài liệu tham khảo để bó Phong cách CSS của tôi trong _Layout.cshtml

@Styles.Render("~/Styles/css") 

Tôi tìm thấy câu trả lời ở đây: http://thebeardeveloper.blogspot.com.au/2013/02/403-forbidden-for-css-bundles-in-asp.html

+0

Đây là câu trả lời đã giúp tôi trong trường hợp của tôi. –

2

Tôi đã có cùng một vấn đề, nhưng không có giải pháp nào ở trên phù hợp với tôi.

Vấn đề là, tôi đã bundling như thế này:

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

bundles.Add(new StyleBundle("~/Content/css").Include(
    "~/Content/bootstrap.css", 
    "~/Content/justified-nav.css", 
    "~/Content/site.css")); 

Nhưng, ~/Content/css cũng là một thư mục - mà đã phá vỡ khi triển khai để Azure.Tôi đã sửa lỗi này bằng cách thay đổi ~/Content/css thành ~/Content/mastercss ở cả hai vị trí

0

Trong trường hợp thiếu biểu định kiểu, sự cố không phải do các lỗi xuất bản thành Azure, lỗi trong quá trình rút gọn hoặc xung đột ảo đường dẫn thực sự.

Đó là do những hành vi khác nhau của BundleCollection.Add(Bundle) giữa gỡ lỗiphát hành.

Nếu bạn quản lý để làm như sau (ví dụ, bởi vì bạn đang sử dụng Durandal từ NuGet và có nhiều BundleConfig của khởi tạo bởi WebActivator, và bạn không thực sự viết bất kỳ của chúng mình)

bundles.Add(new StyleBundle("/foo").Include("/a.css")); 
bundles.Add(new StyleBundle("/foo").Include("/b.css")); 

Về cơ bản, nếu các gói không giảm thiểu, điều này hoạt động: bạn nhận được các yếu tố trong trang Razor của bạn cho cả hai /foo/a.css/foo/b.css.

Nhưng nếu minification tham gia, sau đó b.css không biến nó thành tài nguyên được rút gọn. (hoặc là a.css thay thế ... Tôi đã không chú ý ... chỉ cố gắng để làm cho nó hoạt động).

Bạn có thể làm việc này bằng cách tìm hiểu thứ tự xếp hàng và sử dụng:

bundles.Add(new StyleBundle("/foo").Include("/a.css")); 
bundles.Add(bundles.GetBundleFor("/foo").Include("/b.css")); 

... hoặc bằng cách sử dụng một con đường được đặt tên khác nhau (nếu đó là thực sự ý định của bạn), hoặc tinh chỉnh chiến lược của bạn để bundling khởi (có khả năng có thể phá vỡ cập nhật NuGet).

Nếu chỉ có 'tài liệu' ngu ngốc cho System.Web.Optimization các lớp thực sự làm phiền để chỉ định hành vi thêm nhiều gói với cùng một đường dẫn ảo, chúng tôi không cần phải có cuộc thảo luận này.

5

sửa chữa thực sự đơn giản cho một này:

tôi đã có sau:

bundles.Add(new StyleBundle("~/Content/css").Include(
        "~/Content/bootstrap.css", 
        "~/Content/site.css")); 

tôi cũng đã có một thư mục trong giải pháp của tôi tại địa chỉ:

/Content/Css 

Đó là vấn đề, stylebundle có cùng tên với thư mục trong giải pháp của tôi.

Đổi tên các stylebundle tới:

bundles.Add(new StyleBundle("~/scripts/css").Include(
        "~/Content/bootstrap.css", 
        "~/Content/site.css")); 

và (nhớ) để thay đổi nơi bạn liệu tham khảo nó, _Layout.cshmtl

Vì vậy, để làm cho rõ ràng, nếu tên stylebundle của bạn cũng giống như một thực tế thư mục trong giải pháp của bạn sau đó bạn sẽ nhận được vấn đề này. Đơn giản chỉ cần đặt tên cho nó một cái gì đó khác nhau.

+0

Vấn đề tương tự. Có một thư mục Scirpts/app và có một gói được định nghĩa trong BundleConfig: ~/bundles/app. Tập lệnh của tôi được đặt trong thư mục ứng dụng. Sau khi đổi tên ~/bundles/app trong BundleConfig.cs, thành ~/bundles/theapp nó hoạt động. – yonexbat

1

Hãy làm một số việc đào mộ. Hôm nay tôi bắt đầu không thích thú với Azure và nhanh chóng chạy vào một vấn đề tương tự.

bó phong cách được định nghĩa như thế này:

bundles.Add(new StyleBundle("~/Styles/css").Include(
        "~/Content/bootstrap.superhero.css", 
        "~/Content/site.css")); 

Nhưng không css bị trả lại. Sau khi gần như mở ra một câu hỏi thứ hai tôi nhận ra, tập tin bootstrap.superhero.css bị chuyển sang màu xám trong trình khám phá giải pháp. Những gì đã làm việc cục bộ trong Visual Studio, đã không thành công trong Azure, bởi vì tệp chưa được triển khai trong dự án.

Tl; dr: Kích chuột phải vào file Css và sau đó "Bao gồm trong dự án"

0

Là một trong những câu trả lời đã đề cập, tôi đã chiến đấu này một vài giờ, vấn đề của tôi cũng là tôi đã có một thư mục có tên kịch bản, vì vậy tôi đã thay đổi tên của kịch bản từ (đây là từ quan điểm chỉ số của tôi)

@Scripts.Render("~/Scripts/CircleStats") //this is also a folder in my project, which I think is the problem for azure 

để

@Scripts.Render("~/bundles/CircleStats") 

Và nó làm việc, hy vọng điều này sẽ giúp ai đó

https://forums.asp.net/t/1810635.aspx?403+Access+denied+when+using+Bundling

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