ASP.NET MVC 4 Beta Sürüm Notları

Bu belgede Visual Studio 2010 için ASP.NET MVC 4 Beta sürümü açıklanmaktadır.

Not

Bu en güncel sürüm değildir. ASP.NET MVC 4 RC sürüm notlarını burada bulabilirsiniz.

Yükleme Notları

ASP.NET Visual Studio 2010 için MVC 4 Beta, Web Platformu Yükleyicisi kullanılarak ASP.NET MVC 4 giriş sayfasından yüklenebilir.

ASP.NET MVC 4 Beta yüklemeden önce ASP.NET MVC 4'ün önceden yüklenmiş tüm önizlemelerini kaldırmanız gerekir.

Bu sürüm, .NET Framework 4.5 Geliştirici Önizlemesi ile uyumlu değildir. ASP.NET MVC 4 Beta'sını yüklemeden önce .NET 4.5 Geliştirici Önizlemesini kaldırmanız gerekir.

ASP.NET MVC 4 yüklenebilir ve ASP.NET MVC 3 ile yan yana çalışabilir.

Belgeler

ASP.NET MVC belgeleri msdn web sitesinde aşağıdaki URL'de bulunabilir:

https://go.microsoft.com/fwlink/?LinkID=243043

MVC ASP.NET hakkında öğreticilere ve diğer bilgilere ASP.NET web sitesinin () MVC 4 sayfasından ulaşabilirsinizhttps://www.asp.net/mvc/mvc4.

Destek

Bu bir önizleme sürümüdür ve resmi olarak desteklenmez. Bu sürümle çalışma hakkında sorularınız varsa, bunları ASP.NET topluluğu üyelerinin sıklıkla resmi olmayan destek sağlayabilecekleri ASP.NET MVC forumlarına (https://forums.asp.net/1146.aspx ) gönderin.

Yazılım Gereksinimleri

Visual Studio için ASP.NET MVC 4 bileşenleri PowerShell 2.0 ve Service Pack 1 ile Visual Studio 2010 veya Service Pack 1 ile Visual Web Developer Express 2010 gerektirir.

ASP.NET MVC 3 Projesini ASP.NET MVC 4'e Yükseltme

ASP.NET MVC 4 aynı bilgisayarda ASP.NET MVC 3 ile yan yana yüklenebilir ve bu da ASP.NET MVC 3 uygulamasınıN MVC 4'ASP.NET e ne zaman yükseltileceği konusunda esneklik sağlar.

Yükseltmenin en basit yolu, yeni bir ASP.NET MVC 4 projesi oluşturmak ve mevcut MVC 3 projesindeki tüm görünümleri, denetleyicileri, kodları ve içerik dosyalarını yeni projeye kopyalamak ve ardından yeni projedeki derleme başvurularını eski projeyle eşleşecek şekilde güncelleştirmektir. MVC 3 projesindeki Web.config dosyasında değişiklik yaptıysanız, bu değişiklikleri MVC 4 projesindeki Web.config dosyasıyla da birleştirmeniz gerekir.

Mevcut ASP.NET MVC 3 uygulamasını sürüm 4'e el ile yükseltmek için aşağıdakileri yapın:

  1. Projedeki tüm Web.config dosyalarında (projenin kökünde bir tane vardır, biri Görünümler klasöründe ve biri projenizdeki her alan için Görünümler klasöründedir), aşağıdaki metnin her örneğini değiştirin:

    System.Web.Mvc, Version=3.0.0.0
    System.Web.WebPages, Version=1.0.0.0
    System.Web.Helpers, Version=1.0.0.0
    System.Web.WebPages.Razor, Version=1.0.0.0
    

    aşağıdaki karşılık gelen metinle birlikte:

    System.Web.Mvc, Version=4.0.0.0
    System.Web.WebPages, Version=2.0.0.0
    System.Web.Helpers, Version=2.0.0.0,
     System.Web.WebPages.Razor, Version=2.0.0.0,
    
  2. Kök Web.config dosyasında webPages:Version öğesini "2.0.0.0" olarak güncelleştirin ve "true" değerine sahip yeni bir PreserveLoginUrl anahtarı ekleyin:

    <appSettings>
      <add key="webpages:Version" value="2.0.0.0" />
      <add key="PreserveLoginUrl" value="true" />
    </appSettings>
    
  3. Çözüm Gezgini'da System.Web.Mvc 'ye (sürüm 3 DLL'ye işaret eden) başvuruyu silin. Ardından System.Web.Mvc'ye (v4.0.0.0) bir başvuru ekleyin. Özellikle derleme başvurularını güncelleştirmek için aşağıdaki değişiklikleri yapın. Ayrıntılar şunlardır:

    1. Çözüm Gezgini'da aşağıdaki derlemelere yapılan başvuruları silin:

      • System.Web.Mvc(v3.0.0.0)
      • System.Web.WebPages(v1.0.0.0)
      • System.Web.Razor(v1.0.0.0)
      • System.Web.WebPages.Deployment(v1.0.0.0)
      • System.Web.WebPages.Razor(v1.0.0.0)
    2. Aşağıdaki derlemelere başvuru ekleyin:

      • System.Web.Mvc(v4.0.0.0)
      • System.Web.WebPages(v2.0.0.0)
      • System.Web.Razor(v2.0.0.0)
      • System.Web.WebPages.Deployment(v2.0.0.0)
      • System.Web.WebPages.Razor(v2.0.0.0)
  4. Çözüm Gezgini'da proje adına sağ tıklayın ve Projeyi Kaldır'ı seçin. Ardından ada yeniden sağ tıklayın ve ProjectName.csproj Dosyasını Düzenle'yi seçin.

  5. ProjectTypeGuids öğesini bulun ve {E53F8FEA-EAE0-44A6-8774-FFD645390401} öğesini {E3E379DF-F4C6-4180-9B81-6769533ABE47} ile değiştirin.

  6. Değişiklikleri kaydedin, düzenlediğiniz proje (.csproj) dosyasını kapatın, projeye sağ tıklayın ve ardından Projeyi Yeniden Yükle'yi seçin.

  7. Proje, ASP.NET MVC'nin önceki sürümleri kullanılarak derlenen üçüncü taraf kitaplıklarına başvuruyorsa, kök Web.config dosyasını açın ve yapılandırma bölümünün altına aşağıdaki üç bindingRedirect öğesini ekleyin:

    <configuration>
      <!--... elements deleted for clarity ...-->
     
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Helpers" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.WebPages" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

ASP.NET MVC 4 Beta'daki Yeni Özellikler

Bu bölümde, ASP.NET MVC 4 Beta sürümünde sunulan özellikler açıklanmaktadır.

ASP.NET Web API

ASP.NET MVC 4 artık tarayıcılar ve mobil cihazlar da dahil olmak üzere çok çeşitli istemcilere ulaşabilen HTTP hizmetleri oluşturmaya yönelik yeni bir çerçeve olan ASP.NET Web API'sini içeriyor. ASP.NET Web API'si, RESTful hizmetleri oluşturmak için de ideal bir platformdur.

ASP.NET Web API'sinde aşağıdaki özellikler için destek bulunur:

  • Modern HTTP programlama modeli: Yeni, kesin olarak belirlenmiş bir HTTP nesne modeli kullanarak Web API'lerinizdeki HTTP isteklerine ve yanıtlarına doğrudan erişin ve bu istekleri işleyin. Aynı programlama modeli ve HTTP işlem hattı, yeni HttpClient türü aracılığıyla istemcide simetrik olarak kullanılabilir.
  • Rotalar için tam destek: Web API'leri artık her zaman Web yığınının bir parçası olan yol parametreleri ve kısıtlamaları da dahil olmak üzere tüm yol özellikleri kümesini destekliyor. Buna ek olarak, eylemlere eşlemenin kurallar için tam desteği vardır, bu nedenle artık sınıflarınıza ve yöntemlerinize [HttpPost] gibi öznitelikler uygulamanız gerekmez.
  • İçerik anlaşması: İstemci ve sunucu, bir API'den döndürülen veriler için doğru biçimi belirlemek üzere birlikte çalışabilir. XML, JSON ve Form URL ile kodlanmış biçimler için varsayılan destek sağlarız ve kendi biçimlendiricilerinizi ekleyerek ve hatta varsayılan içerik anlaşması stratejisini değiştirerek bu desteği genişletebilirsiniz.
  • Model bağlama ve doğrulama: Model bağlayıcıları, http isteğinin çeşitli bölümlerinden verileri ayıklamak ve bu ileti bölümlerini Web API eylemleri tarafından kullanılabilecek .NET nesnelerine dönüştürmek için kolay bir yol sağlar.
  • Filtre: Web API'leri artık [Authorize] özniteliği gibi iyi bilinen filtreler de dahil olmak üzere filtreleri destekliyor. Eylemler, yetkilendirme ve özel durum işleme için kendi filtrelerinizi yazabilir ve takabilirsiniz.
  • Sorgu oluşturma: Yalnızca IQueryable<T> döndürerek Web API'niz OData URL kuralları aracılığıyla sorgulamayı destekler.
  • HTTP ayrıntılarının test edilebilirliği geliştirildi: Statik bağlam nesnelerinde HTTP ayrıntılarını ayarlamak yerine, Web API eylemleri artık HttpRequestMessage ve HttpResponseMessage örnekleriyle çalışabilir. Bu nesnelerin genel sürümleri, HTTP türlerine ek olarak özel türlerinizle çalışmanıza olanak sağlamak için de mevcuttur.
  • DependencyResolver aracılığıyla Denetimin Ters Çevrilmesi (IoC) geliştirildi: Web API artık MVC'nin bağımlılık çözümleyicisi tarafından uygulanan hizmet bulucu desenini kullanarak birçok farklı olanak için örnekler elde ediyor.
  • Kod tabanlı yapılandırma: Web API yapılandırması yalnızca kod aracılığıyla gerçekleştirilir ve yapılandırma dosyalarınızı temiz bırakır.
  • Kendi kendine konak: Web API'leri, yolların tam gücü ve Web API'sinin diğer özellikleri kullanılarak IIS'ye ek olarak kendi işleminizde barındırılabilir.

ASP.NET Web API'si hakkında daha fazla bilgi için adresini ziyaret https://www.asp.net/web-apiedin.

Tek Sayfalı Uygulamayı ASP.NET

ASP.NET MVC 4 artık JavaScript ve Web API'lerini kullanarak önemli istemci tarafı etkileşimleriyle tek sayfalı uygulamalar oluşturma deneyiminin erken önizlemesini içeriyor. Bu destek şunları içerir:

  • Önbelleğe alınmış verilerle daha zengin yerel etkileşimler için bir dizi JavaScript kitaplığı
  • İş birimi ve DAL desteği için ek Web API bileşenleri
  • Hızlı bir başlangıç yapmak için yapı iskelesi içeren bir MVC proje şablonu

ASP.NET MVC 4'teki Tek Sayfalı Uygulama desteği hakkında daha fazla bilgi için adresini ziyaret https://www.asp.net/single-page-applicationedin.

Varsayılan Proje Şablonlarına Yönelik Geliştirmeler

Yeni ASP.NET MVC 4 projeleri oluşturmak için kullanılan şablon daha modern görünümlü bir web sitesi oluşturacak şekilde güncelleştirildi:

Varsayılan proje şablonunun tarayıcı görünümünün ekran görüntüsü.

Kozmetik iyileştirmelere ek olarak, yeni şablonda geliştirilmiş işlevsellik de vardır. Şablon, özelleştirme olmadan hem masaüstü tarayıcılarda hem de mobil tarayıcılarda iyi görünmesi için uyarlamalı işleme adlı bir teknik kullanır.

Varsayılan proje şablonunun mobil tarayıcı görünümünün ekran görüntüsü.

Uyarlamalı işlemeyi çalışırken görmek için bir mobil öykünücü kullanabilir veya masaüstü tarayıcı penceresini daha küçük olacak şekilde yeniden boyutlandırmayı deneyebilirsiniz. Tarayıcı penceresi yeterince küçüldiğinde, sayfanın düzeni değişir.

Varsayılan proje şablonunda yapılan bir diğer geliştirme de daha zengin bir kullanıcı arabirimi sağlamak için JavaScript kullanılmasıdır. Şablonda kullanılan Oturum Açma ve Kaydetme bağlantıları, jQuery Kullanıcı Arabirimi İletişim Kutusu'nun zengin bir oturum açma ekranı sunmak için nasıl kullanılacağını gösteren örneklerdir:

Varsayılan proje şablonu oturum açma ekranının ekran görüntüsü.

Mobil Proje Şablonu

Yeni bir projeye başlıyorsanız ve özellikle mobil ve tablet tarayıcıları için bir site oluşturmak istiyorsanız, yeni Mobil Uygulama proje şablonunu kullanabilirsiniz. Bu, dokunma için iyileştirilmiş kullanıcı arabirimi oluşturmaya yönelik açık kaynak bir kitaplık olan jQuery Mobile'ı temel alır:

Varsayılan proje şablonu oturum açma ekranının mobil tarayıcı görünümünün ekran görüntüsü.

Bu şablon, İnternet Uygulaması şablonuyla aynı uygulama yapısını içerir (ve denetleyici kodu neredeyse aynıdır), ancak iyi görünmesi ve dokunmatik tabanlı mobil cihazlarda iyi davranması için jQuery Mobile kullanılarak stillendirilir. Mobil kullanıcı arabirimini yapılandırma ve stil oluşturma hakkında daha fazla bilgi edinmek için jQuery Mobile proje web sitesine bakın.

Mobil cihazlar için iyileştirilmiş görünümler eklemek istediğiniz masaüstü odaklı bir siteniz zaten varsa veya masaüstü ve mobil tarayıcılara farklı stilde görünümler sunan tek bir site oluşturmak istiyorsanız, yeni Görüntü Modları özelliğini kullanabilirsiniz. (Sonraki bölüme bakın.)

Görüntüleme Modları

Yeni Görüntü Modları özelliği, uygulamanın isteği yapan tarayıcıya bağlı olarak görünümleri seçmesine olanak tanır. Örneğin, bir masaüstü tarayıcısı Giriş sayfasını isterse, uygulama Views\Home\Index.cshtml şablonunu kullanabilir. Mobil tarayıcı Giriş sayfasını isterse, uygulama Views\Home\Index.mobile.cshtml şablonunu döndürebilir.

Belirli tarayıcı türleri için düzenler ve kısmi değerler de geçersiz kılınabilir. Örnek:

  • Views\Shared klasörünüz hem _Layout.cshtml hem de _Layout.mobile.cshtml şablonlarını içeriyorsa, uygulama varsayılan olarak mobil tarayıcılardan gelen istekler sırasında _Layout.mobile.cshtml ve diğer istekler sırasında _Layout.cshtml kullanır.
  • Bir klasör hem _MyPartial.cshtml hem de _MyPartial.mobile.cshtml içeriyorsa, "_MyPartial") yönergesi @Html.Partial(mobil tarayıcılardan gelen istekler sırasında _MyPartial.mobile.cshtml ve diğer istekler sırasında _MyPartial.cshtml'yi işler.

Diğer cihazlar için daha belirli görünümler, düzenler veya kısmi görünümler oluşturmak istiyorsanız, bir istek belirli koşulları karşıladığında hangi adın aranacağını belirtmek için yeni bir DefaultDisplayMode örneği kaydedebilirsiniz. Örneğin, "iPhone" dizesini Apple iPhone tarayıcısı bir istekte bulunurken geçerli olan bir görüntüleme modu olarak kaydetmek için Global.asax dosyasındaki Application_Start yöntemine aşağıdaki kodu ekleyebilirsiniz:

DisplayModeProvider.Instance.Modes.Insert(0, new
DefaultDisplayMode("iPhone")
{
    ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
        ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
 });

Bu kod çalıştırıldıktan sonra, bir Apple iPhone tarayıcısı istekte bulunduğunda uygulamanız Views\Shared\_Layout.iPhone.cshtml düzenini (varsa) kullanır.

jQuery Mobile, Görünüm Değiştirici ve Tarayıcı Geçersiz Kılma

jQuery Mobile, dokunma için iyileştirilmiş web kullanıcı arabirimi oluşturmaya yönelik bir açık kaynak kitaplığıdır. jQuery Mobile'ı bir ASP.NET MVC 4 uygulamasıyla kullanmak istiyorsanız, başlamanıza yardımcı olacak bir NuGet paketi indirip yükleyebilirsiniz. Visual Studio Paket Yöneticisi Konsolu'ndan yüklemek için aşağıdaki komutu yazın:

Install-Package jQuery.Mobile.MVC

Bu, jQuery Mobile'ı ve aşağıdakiler de dahil olmak üzere bazı yardımcı dosyaları yükler:

  • Views/Shared/_Layout.Mobile.cshtml, jQuery Mobile tabanlı bir düzendir.
  • Views/Shared/_ViewSwitcher.cshtml kısmi görünümünden ve ViewSwitcherController.cs denetleyicisinden oluşan bir görünüm değiştirici bileşeni.

Paketi yükledikten sonra, uygulamanızı bir mobil tarayıcı (veya Firefox Kullanıcı Aracısı Değiştirici eklentisi gibi eşdeğer) kullanarak çalıştırın. JQuery Mobile düzeni ve stili işlediği için sayfalarınızın oldukça farklı göründüğünü göreceksiniz. Bundan yararlanmak için aşağıdakileri yapabilirsiniz:

  • Daha önce Görüntüleme Modları altında açıklandığı gibi mobil görünüm geçersiz kılmaları oluşturun (örneğin, mobil tarayıcılar için Views\Home\Index.cshtml'yi geçersiz kılmak için Views\Home\Index.mobile.cshtml oluşturun).
  • Mobil görünümlerde dokunma için iyileştirilmiş kullanıcı arabirimi öğeleri ekleme hakkında daha fazla bilgi edinmek için jQuery Mobile belgelerini okuyun.

Mobil cihazlar için iyileştirilmiş web sayfaları için bir kural, metni Masaüstü görünümü veya Kullanıcıların sayfanın masaüstü sürümüne geçiş yapmasını sağlayan Tam site modu gibi bir bağlantı eklemektir. jQuery.Mobile.MVC paketi, bu amaçla örnek bir görünüm değiştirici bileşeni içerir. Varsayılan Views\Shared\_Layout.Mobile.cshtml görünümünde kullanılır ve sayfa işlenirken şöyle görünür:

Mobil görünüm ve masaüstü görünümü bağlantılarının ekran görüntüsü.

Ziyaretçiler bağlantıya tıklarsa aynı sayfanın masaüstü sürümüne geçerler.

Masaüstü düzeniniz varsayılan olarak bir görünüm değiştirici içermeyeceği için, ziyaretçilerin mobil moda geçmek için bir yolu yoktur. Bunu etkinleştirmek için, gövde> öğesinin hemen içine masaüstü düzeninize _ViewSwitcher aşağıdaki başvuruyu< ekleyin:

<body>
    @Html.Partial("_ViewSwitcher")
    ...

Görünüm değiştirici, Tarayıcı Geçersiz Kılma adlı yeni bir özellik kullanır. Bu özellik, uygulamanızın istekleri aslında bulundukları tarayıcıdan (kullanıcı aracısı) farklı bir tarayıcıdan geliyormuş gibi ele almanızı sağlar. Aşağıdaki tabloda, Tarayıcı Geçersiz Kılma'nın sağladığı yöntemler listelenmiştir.

HttpContext.SetOverriddenBrowser(userAgentString) Belirtilen kullanıcı aracısını kullanarak isteğin gerçek kullanıcı aracısı değerini geçersiz kılar.
HttpContext.GetOverriddenUserAgent() İsteğin kullanıcı aracısı geçersiz kılma değerini veya geçersiz kılma belirtilmemişse gerçek kullanıcı aracısı dizesini döndürür.
HttpContext.GetOverriddenBrowser() İstek için ayarlanmış olan kullanıcı aracısına karşılık gelen bir HttpBrowserCapabilitiesBase örneği döndürür (gerçek veya geçersiz kılınmış). IsMobileDevice gibi özellikleri almak için bu değeri kullanabilirsiniz.
HttpContext.ClearOverriddenBrowser() Geçerli istek için geçersiz kılınan tüm kullanıcı aracılarını kaldırır.

Tarayıcı Geçersiz Kılma, ASP.NET MVC 4'ün temel bir özelliğidir ve jQuery.Mobile.MVC paketini yüklemeseniz bile kullanılabilir. Ancak yalnızca görünüm, düzen ve kısmi görünüm seçimini etkiler; Request.Browser nesnesine bağlı olan diğer ASP.NET özelliğini etkilemez.

Varsayılan olarak, kullanıcı aracısını geçersiz kılma bir tanımlama bilgisi kullanılarak depolanır. Geçersiz kılmayı başka bir yerde (örneğin, bir veritabanında) depolamak istiyorsanız, varsayılan sağlayıcıyı (BrowserOverrideStores.Current) değiştirebilirsiniz. Bu sağlayıcının belgeleri, ASP.NET MVC'nin daha sonraki bir sürümüne eşlik edecektir.

Visual Studio'da Kod Oluşturma Tarifleri

Yeni Yemek Tarifleri özelliği, Visual Studio'nun NuGet kullanarak yükleyebileceğiniz paketleri temel alan çözüme özgü kod oluşturmasını sağlar. Yemek Tarifleri çerçevesi geliştiricilerin kod oluşturma eklentileri yazmasını kolaylaştırır. Bu eklentileri Alan Ekle, Denetleyici Ekle ve Görünüm Ekle için yerleşik kod oluşturucularını değiştirmek için de kullanabilirsiniz. Tarifler NuGet paketleri olarak dağıtıldığından, kaynak denetimine kolayca iade edilebilir ve projedeki tüm geliştiricilerle otomatik olarak paylaşılabilir. Ayrıca çözüm bazında da kullanılabilirler.

Zaman Uyumsuz Denetleyiciler için Görev Desteği

Artık zaman uyumsuz eylem yöntemlerini , Task veya Task<ActionResult> türünde bir nesne döndüren tek yöntemler olarak yazabilirsiniz.

Örneğin, Visual C# 5 kullanıyorsanız (veya Zaman Uyumsuz CTP kullanıyorsanız), aşağıdakine benzer bir zaman uyumsuz eylem yöntemi oluşturabilirsiniz:

public async Task<ActionResult> Index(string city) {
    var newsService = new NewsService();
    var sportsService = new SportsService();
    
    return View("Common",
        new PortalViewModel {
        NewsHeadlines = await newsService.GetHeadlinesAsync(),
        SportsScores = await sportsService.GetScoresAsync()
    });
}

Önceki eylem yönteminde newsService.GetHeadlinesAsync ve sportsService.GetScoresAsync çağrıları zaman uyumsuz olarak çağrılır ve iş parçacığı havuzundan bir iş parçacığını engellemez.

Görev örneklerini döndüren zaman uyumsuz eylem yöntemleri de zaman aşımlarını destekleyebilir. Eylem yönteminizi iptal edilebilir hale getirmek için eylem yöntemi imzasına CancellationToken türünde bir parametre ekleyin. Aşağıdaki örnekte, zaman aşımı 2500 milisaniye olan ve zaman aşımı oluşursa istemciye Zaman Aşımı görünümü görüntüleyen zaman uyumsuz bir eylem yöntemi gösterilmektedir.

[AsyncTimeout(2500)]
[HandleError(ExceptionType = typeof(TaskCanceledException), View = "TimedOut")]
public async Task<ActionResult> Index(string city,
    CancellationToken cancellationToken) {
    var newsService = new NewsService();
    var sportsService = new SportsService();
   
    return View("Common",
        new PortalViewModel {
        NewsHeadlines = await newsService.GetHeadlinesAsync(cancellationToken),
        SportsScores = await sportsService.GetScoresAsync(cancellationToken)
    });
}

Azure SDK

ASP.NET MVC 4 Beta, Windows Azure SDK'sının Eylül 2011 1.5 sürümünü destekler.

Bilinen Sorunlar ve Hataya Neden Olan Değişiklikler

  • MVC 4 Beta ASP.NET yükledikten sonra, Visual Studio 2010 Service Pack 1 CSHTML/VBHTML düzenleyicisi cshtml veya vbhtml dosyalarının içine kod parçacığı veya JavaScript yazdıktan sonra uzun süre duraklatılabilir. Bu yalnızca yeni oluşturulmuş ve henüz derlenmemiş ASP.NET MVC 4 uygulamalarında oluşur.

    Geçici çözüm, derlemeleri bin klasörüne almak için projeyi derlemektir. Derlemeleri bölme klasöründen kaldıran projeyi temizlerseniz düzenleyici sorununun geri geleceğini unutmayın.

    Bu durum bir sonraki sürümde düzeltilecektir.

  • Visual Studio 11 Beta için C# Proje şablonları Global.asax.cs dosyasında yanlış bağlantı dizesi içeriyor. Visual Studio 11 Beta'da oluşturulan projeler için Application_Start yönteminde belirtilen varsayılan bağlantı, boş bir ters eğik çizgi () karakteri içeren bir LocalDB bağlantı dizesi içerir. Bu, SqlException oluşturan Bir Entity Framework DbContext'e erişme girişiminde bağlantı hatasıyla sonuçlanır.

    Bu sorunu düzeltmek için Global.asax.cs dosyasının App_Start yöntemindeki ters eğik çizgi karakterinin aşağıdaki gibi okumasını sağlayın:

    Database.DefaultConnectionFactory = 
       new SqlConnectionFactory(
         "Data Source=(localdb)\\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
    
  • .NET 4.5'i hedefleyen ASP.NET MVC 4 uygulamaları, .NET 4.0 altında çalıştırıldığında System.Net.Http.dll derlemesine erişmeye çalıştığında fileLoadException oluşturur. .NET 4.5 altında oluşturulan ASP.NET MVC 4 uygulamaları, uygulama .NET 4.0 yüklü bir sistemde yürütülürken "'System.Net.Http' dosyası veya derlemesi veya bağımlılıklarından biri yüklenemedi" ifadesini belirten bir FileLoadException'a neden olan bir bağlama yeniden yönlendirmesi içerir. Bu sorunu düzeltmek için aşağıdaki bağlama yeniden yönlendirmesini web.config kaldırın:

    <dependentAssembly>
     <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" 
        culture="neutral" />
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
    </dependentAssembly>
    

    Değiştirilen web.config derleme bağlama öğesi aşağıdaki gibi görünmelidir:

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <dependentAssembly>
      <assemblyIdentity name="System.Web.Helpers" 
        publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
     </dependentAssembly>
     <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" 
        publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
     </dependentAssembly>
     <dependentAssembly>
      <assemblyIdentity name="System.Web.WebPages" 
        publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
     </dependentAssembly>
    </assemblyBinding>
    
  • Visual Basic projelerindeki "Denetleyici Ekle" öğe şablonu, bir alanın içinden çağrıldığında yanlış bir ad alanı oluşturur. Visual Basic kullanan bir ASP.NET MVC projesindeki bir alana denetleyici eklediğinizde, öğe şablonu denetleyiciye yanlış ad alanı ekler. Sonuç, denetleyicideki herhangi bir eyleme gittiğinizde "dosya bulunamadı" hatasıdır.

    Oluşturulan ad alanı, kök ad alanı sonrasındaki her şeyi atlar. Örneğin, oluşturulan ad alanı RootNamespace'tir ancak RootNamespace.Areas.AreaName.Controllers olmalıdır.

  • Razor Görünüm Altyapısı'nda hataya neden olan değişiklikler. Razor ayrıştırıcısının yeniden yazma işleminin bir parçası olarak, aşağıdaki türler System.Web.Mvc.Razor'dan kaldırıldı:

    • ModelSpan
    • MvcVBRazorCodeGenerator
    • MvcCSharpRazorCodeGenerator
    • MvcVBRazorCodeParser

    Aşağıdaki yöntemler de kaldırıldı:

    • MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
    • MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
    • MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
  • WebMatrix.WebData.dll bir ASP.NET MVC 4 uygulamalarının /bin dizinine eklendiğinde, form kimlik doğrulaması url'sini devralır. WebMatrix.WebData.dll derlemesini uygulamanıza eklemek (örneğin, Dağıtılabilir Bağımlılıklar Ekle iletişim kutusunu kullanırken "Razor Söz Dizimi ile Web Sayfaları ASP.NET" seçeneğini belirleyerek), varsayılan ASP.NET MVC Hesap Denetleyicisi tarafından beklendiği gibi /account/login yerine /account/logon kimlik doğrulaması oturum açma yeniden yönlendirmesini geçersiz kılar. Bu davranışı önlemek ve web.config kimlik doğrulaması bölümünde belirtilen URL'yi kullanmak için PreserveLoginUrl adlı bir appSetting ekleyebilir ve bunu true olarak ayarlayabilirsiniz:

    <appSettings>
        <add key="PreserveLoginUrl" value="true"/>
    </appSettings>
    
  • Visual Studio 2010 ve Visual Web Developer 2010'un yan yana yüklemeleri için ASP.NET MVC 4'ü yüklemeye çalışırken NuGet paket yöneticisi yüklenemiyor. Visual Studio 2010 ve Visual Web Developer 2010'u ASP.NET MVC 4 ile yan yana çalıştırmak için, Visual Studio'nun her iki sürümü de yüklendikten sonra ASP.NET MVC 4'ü yüklemeniz gerekir.

  • Önkoşullar zaten kaldırılmışsa MVC 4 ASP.NET kaldırma işlemi başarısız olur. MVC 4 ASP.NET temiz bir şekilde kaldırmak için Visual Studio'yu kaldırmadan önce ASP.NET MVC 4'i kaldırmanız gerekir.

  • Varsayılan Bir Web API'si projesinin çalıştırılması, kullanıcıyı mevcut olmayan RegisterApis yöntemini kullanarak hatalı şekilde yol eklemeye yönlendiren yönergeleri gösterir. Yollar, ASP.NET yol tablosu kullanılarak RegisterRoutes yöntemine eklenmelidir.

  • MVC 4 Beta ASP.NET yüklenmesi, MVC 3 RTM uygulamaları ASP.NET sonlar. RTM sürümüyle oluşturulmuş ASP.NET MVC 3 uygulamaları (ASP.NET MVC 3 Araçları Güncelleştirme sürümüyle değil), ASP.NET MVC 4 Beta ile yan yana çalışmak için aşağıdaki değişiklikleri gerektirir. Bu güncelleştirmeleri yapmadan projeyi oluşturmak derleme hatalarıyla sonuçlaşır.

    Zorunlu güncelleştirmeler

    1. Kök Web.config dosyasına webPages>:Version anahtarını ve 1.0.0.0 değerini içeren yeni< bir appSettings girdisi ekleyin.

      <appSettings>
          <add key="webpages:Version" value="1.0.0.0"/>
          <add key="ClientValidationEnabled" value="true"/>
          <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
      </appSettings>
      
    2. Çözüm Gezgini'da proje adına sağ tıklayın ve Projeyi Kaldır'ı seçin. Ardından ada yeniden sağ tıklayın ve ProjectName.csproj Dosyasını Düzenle'yi seçin.

    3. Aşağıdaki derleme başvurularını bulun:

      <Reference Include="System.Web.WebPages"/> 
      <Reference Include="System.Web.Helpers" />
      

      Bunları aşağıdakilerle değiştirin:

      <Reference Include="System.Web.WebPages, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "/> 
      <Reference Include="System.Web.Helpers, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
      
    4. Değişiklikleri kaydedin, düzenlediğiniz proje (.csproj) dosyasını kapatın ve sonra projeye sağ tıklayıp Yeniden Yükle'yi seçin.