7

Son zamanlarda projemizi MVC 3'ten MVC 4'e geçirdik. .NET 4.0 çerçevesini hedefliyoruz ve web uygulamamız 32 bit Bazı referanslar nedeniyle dahil etmeliyiz.ASP.NET/MVC 4 paketleme ve küçültme 64 bit IIS 7.5 sunucusunda 404 sorun

Yapmakta olduğumuz sorun, paket/minification'mizi Chirpy'den yerleşik ASP.NET paketlemeye dönüştürdüğümüzdür. Site, hem Windows Server 2003/IIS 6 hem de 2008/IIS 7.5, SADECE .NET 4.0 ve 64 bit geliştirme makinelerimizle 32 bit sunucularda sorunsuz çalışmaktadır. Paketleme/kıymetlendirme, yukarıdakilerin hepsinde iyi çalışır.

SADECE .NET 4.0 yüklü bir 64-bit Windows 2008/IIS 7.5 sunucusunda, demetleme çalışmaz. Hem oluşturulan komut dosyaları hem de stiller için 404 hatası alıyoruz.

.NET 4.5'i 64 bit sunucuya yüklersek, düzgün çalışır. Bunun nedeni şudur: Bazı sunucular .NET 4.5 olmadan çalışır ve bunu gerektirir. Bunun da ötesinde, Windows Server 2003/64-bit .NET 4.5 ile uyumlu değildir, bu yüzden bir sorun varsa, bu düzeltme çalışmaz.

Garip olan, örnek MVC 4 örnek internet uygulaması hedefleme .NET 4.0 yerleşik x86, sorun sunucusunda sadece 4.0 ile gayet iyi çalışıyor. Web.config, birlik, günlüğe kaydetme, elmah ve noktadan daha az yapılandırma dışında tamamen aynıdır.

Bu konuda herhangi bir yardım çok takdir edilecektir.

@Scripts.Render("~/bundles/WebApp.Main") 
    <link href="@Url.Content("~/Content/SiteLess.less")" rel="stylesheet" type="text/css" /> 
    @Styles.Render("~/bundles/Content/WebApp.Main") 
    ... 

DÜZENLEME: bizim düzeninde paketlerini baþvurduðunuzu nasıl

İşte
using System.Web; 
using System.Web.Optimization; 

namespace WebApp 
{ 
    public class BundleConfig 
    { 
     public static void RegisterBundles(BundleCollection bundles) 
     { 
      bundles.UseCdn = false; 

      // .debug.js, -vsdoc.js and .intellisense.js files 
      // are in BundleTable.Bundles.IgnoreList by default. 
      // Clear out the list and add back the ones we want to ignore. 
      // Don't add back .debug.js. 
      bundles.IgnoreList.Clear(); 
      bundles.IgnoreList.Ignore("*-vsdoc.js"); 
      bundles.IgnoreList.Ignore("*intellisense.js"); 

      bundles.Add((new ScriptBundle("~/bundles/WebApp.Register1")).Include("~/Scripts/jquery.ba-tinypubsub.min.js",  
                       "~/Scripts/knockout-2.1.0.js", 
                       "~/Scripts/WebApp/WebApp.Register.RegisterStudent.js", 
                       "~/Scripts/WebApp/WebApp.Register.RegisterPresenter.js")); 

      bundles.Add((new Bundle("~/bundles/WebApp.Register2")).Include("~/Scripts/WebApp/WebApp.Register.StudentSelect.js")); 


      bundles.Add((new ScriptBundle("~/bundles/WebApp.View1")).Include("~/Scripts/jquery.ba-tinypubsub.min.js", 
                      "~/Scripts/WebApp/WebApp.View.ImagePresenter.js", 
                      "~/Scripts/WebApp/WebApp.View.ImageResults.js")); 

      bundles.Add((new Bundle("~/bundles/WebApp.View2")).Include("~/Scripts/WebApp/WebApp.View.StudentsSelect.js")); 

      bundles.Add((new ScriptBundle("~/bundles/WebApp.Print1")).Include("~/Scripts/WebApp/WebApp.Print.SelectedIdArray.js", 
                       "~/Scripts/jquery.ba-tinypubsub.min.js", 
                       "~/Scripts/WebApp/WebApp.Print.DocumentsSelect.js", 
                       "~/Scripts/WebApp/WebApp.Print.DocumentsSelected.js", 
                       "~/Scripts/WebApp/WebApp.Print.DocumentsPresenter.js", 
                       "~/Scripts/WebApp/WebApp.Print.StudentsPresenter.js", 
                       "~/Scripts/WebApp/WebApp.Print.PrinterSelected.js", 
                       "~/Scripts/WebApp/WebApp.Print.OutputSummary.js", 
                       "~/Scripts/WebApp/WebApp.Print.OutputPresenter.js", 
                       "~/Scripts/WebApp/WebApp.Print.NoStudentPresenter.js")); 

      bundles.Add((new Bundle("~/bundles/WebApp.Print2")).Include("~/Scripts/WebApp/WebApp.Print.StudentsSelect.js", 
                     "~/Scripts/WebApp/WebApp.Print.StudentsSelected.js")); 

      bundles.Add((new ScriptBundle("~/bundles/WebApp.Main")).Include("~/Scripts/modernizr.custom.33607.js", 
                      "~/Scripts/jquery-1.6.1.js", 
                      "~/Scripts/jquery-ui-1.8.10.custom.min.js", 
                      "~/Scripts/jquery-ui.min.js", 
                      "~/Scripts/json.js", 
                      "~/Scripts/jquery.validate.min.js", 
                      "~/Scripts/jquery.marquee.js", 
                      "~/Scripts/YUI.js", 
                      "~/Scripts/Common.SearchHighlight.js")); 

      bundles.Add((new StyleBundle("~/bundles/Content/WebApp.Main")).Include("~/Content/jquery.marquee.min.css", 
                         "~/Content/YUI.css", 
                         "~/Content/Site.css", 
                         "~/Content/ui-lightness/jquery-ui-1.8.10.custom.css")); 
     } 
    } 
} 

var: Yanıtlar/güncellemeler

  • Evet

    , İşte

    BundleConfig.cs var Etkinleştirilmiş 32 bit uygulamalar bayrağı, uygulama havuzunda True olarak ayarlandı.
  • 404 bu http://xx.xx.xx.xxx/WebApp/bundles/WebApp.Main?v=03pBc7hdH1lHLtZGx-JMosNaLpMK7fcmI0uI6auknHw1
  • Windows olay izleyiciye benziyor verir isteğine yol Daha sonra yeniden, bunu kaldırmayı .NET 4.5, yükledikten sonra çalışır bir şey
  • gösterir Bir çalışır .NET 4.0
  • kurumsal 2008 64-bit Sunucu. Sorun sunucusu standart sürümdür. Sorunu düzeltip düzeltmediğini görmek için VM'yi yeniden oluşturacağız.
+3

Bu, http://forums.asp.net/t/1846749.aspx/2/10?Published+MVC+web+to+IIS7+in+Windows+Server+2008+doesn+t+serve+ yardımcı olabilir paketler – Jack

+2

BudleConfig.cs mesajınızı gönderin. – CrazyCoderz

+0

@Jack Teşekkürler, bu yazıyı okuduk ve değişiklikleri önerdik, ancak yardımcı olmadı. Bizimki aslında, yalnızca 64-bit kutusunda yüklü olan .NET 4.0 VE .NET 4.5 ile kutudan çıktı. .NET 4.5 bir gereklilik olduğunu düşünmedim. – Dustin

cevap

1

Sorun, bu sunucu için kullandığımız VM'de .NET 4.0 yüklemesiyle görünüyor. Temiz .NET 4.0 yüklemeleriyle iki yeni sanal makine (her ikisi de Windows 2008 64 bit, tek standart bir kuruluş) oluşturduktan sonra, paket her ikiside iyi çalıştı. Yardımın için teşekkürler.

+0

Lütfen, lütfen bilgilerinizi paylaşabilir misiniz? Ne ".NET 4.0 temizle" anlamı – nothingisnecessary

+0

Temiz anlamıyla tamamen yeni bir .NET 4.0 yüklemesi anlamına gelir. Aşağıda yorumunuzu gördüm, bu ilginç. Bunu şimdi yeni bir işte olduğum gibi test edemiyorum. – Dustin

+2

Sadece bu sorunla karşılaştığınız başka herhangi bir kişi için, sorunun kaynağını BundleModule'ı eklemek için web.config bölümüne bir giriş ekleyerek çözdüm:

2

Başlangıçta 404 sorunla karşılaştığınız ortam, uzantı URL'lerinin düzeltmesi uygulanmadı.

sizin ".NET 4.0 temizlemek", Tesadüfen http://support.microsoft.com/kb/980368

Bkz ya bir versiyon daha geç 4,0 (belki 4.5?) Idi yüklemek veya bilmeyerek extensionless URL'ler için destek sağlamak için düzeltme/güncelleme uygulanmış olabilir.

Windows Server 2008 kutularında (Enterprise; her ikisi de 32bit ve 64bit) aynı anda çalıştım, burada paketleyici çalışma zamanında başarısız oluyordu (düzgün bir şekilde gruplar oluşturuyordu ve /app/bundles/my_script gibi paket URL'sini doğru bir şekilde oluşturuyordu) IIS, paket URL'si için 404'ü döndürüyordu. 980368 numaralı düzeltmeyi yükledim ve paketler çalışmaya başladı.