Visual Studio 2013 için ASP.NET and Web Tools Sürüm Notları

Microsoft tarafından

Bu belgede Visual Studio 2013 için ASP.NET and Web Tools sürümü açıklanmaktadır.

İçindekiler

Visual Studio 2013 için ASP.NET and Web Tools'daki Yeni Özellikler

Yükleme Notları

Visual Studio 2013 için ASP.NET and Web Tools ana yükleyicide paketlenmiştir ve buradan indirilebilir.

Belgeler

Visual Studio 2013 ASP.NET and Web Tools hakkında öğreticiler ve diğer bilgiler ASP.NET web sitesinden edinilebilir.

Yazılım Gereksinimleri

ASP.NET and Web Tools Visual Studio 2013 gerektirir.

Visual Studio 2013 için ASP.NET and Web Tools'daki Yeni Özellikler

Aşağıdaki bölümlerde, yayında tanıtılan özellikler açıklanmaktadır.

Bir ASP.NET

Visual Studio 2013 sürümüyle, ASP.NET teknolojileri kullanma deneyimini birleştirmeye yönelik bir adım attık, böylece istediklerinizi kolayca karıştırıp eşleştirebilirsiniz. Örneğin, MVC kullanarak bir projeyi başlatabilir ve daha sonra projeye kolayca Web Forms sayfalar ekleyebilir veya Web Forms bir projede Web API'lerinin iskelesini oluşturabilirsiniz. Bir ASP.NET, bir geliştirici olarak ASP.NET sevdiğiniz şeyleri yapmanızı kolaylaştırmaya yöneliktir. Hangi teknolojiyi seçerseniz seçin, One ASP.NET'nin güvenilir temel çerçevesi üzerinde oluşturduğunuza güvenebilirsiniz.

Yeni Web Projesi Deneyimi

Visual Studio 2013'da yeni web projeleri oluşturma deneyimini iyileştirdik. Yeni ASP.NET Web Projesi iletişim kutusunda istediğiniz proje türünü seçebilir, herhangi bir teknoloji bileşimini (Web Forms, MVC, Web API'sini) yapılandırabilir, kimlik doğrulama seçeneklerini yapılandırabilir ve birim testi projesi ekleyebilirsiniz.

Yeni ASP.NET Projesi

Yeni iletişim kutusu, şablonların çoğu için varsayılan kimlik doğrulama seçeneklerini değiştirmenize olanak tanır. Örneğin, bir ASP.NET Web Forms projesi oluşturduğunuzda aşağıdaki seçeneklerden herhangi birini seçebilirsiniz:

  • Kimlik Doğrulaması Yok
  • Bireysel Kullanıcı Hesapları (ASP.NET üyelik veya sosyal sağlayıcı oturum açma)
  • Kuruluş Hesapları (İnternet uygulamasında Active Directory)
  • Windows Kimlik Doğrulaması (intranet uygulamasında Active Directory)

Kimlik doğrulaması seçenekleri

Web projeleri oluşturmaya yönelik yeni işlem hakkında daha fazla bilgi için bkz. Visual Studio 2013'da ASP.NET Web Projeleri Oluşturma. Yeni kimlik doğrulama seçenekleri hakkında daha fazla bilgi için bu belgenin devamında ASP.NET Identity bölümüne bakın.

ASP.NET yapı iskelesi

ASP.NET yapı iskelesi, ASP.NET Web uygulamaları için bir kod oluşturma çerçevesidir. Projenize bir veri modeliyle etkileşim kuran ortak kod eklemeyi kolaylaştırır.

Visual Studio'nun önceki sürümlerinde yapı iskelesi ASP.NET MVC projeleri ile sınırlıydı. Visual Studio 2013 ile artık Web Forms dahil olmak üzere tüm ASP.NET projelerde yapı iskelesi kullanabilirsiniz. Visual Studio 2013 şu anda bir Web Forms projesi için sayfa oluşturmayı desteklemez, ancak projeye MVC bağımlılıkları ekleyerek Web Forms ile iskele oluşturmayı kullanmaya devam edebilirsiniz. Web Forms için sayfa oluşturma desteği gelecek bir güncelleştirmede eklenecektir.

yapı iskelesi kullanırken, gerekli tüm bağımlılıkların projeye yüklendiğinden emin olacağız. Örneğin, bir ASP.NET Web Forms projesiyle başlayıp bir Web API Denetleyicisi eklemek için iskeleyi kullanırsanız, gerekli NuGet paketleri ve başvuruları projenize otomatik olarak eklenir.

bir Web Forms projesine MVC iskelesi eklemek için yeni bir yapı iskelesi öğesi ekleyin ve iletişim penceresinde MVC 5 Bağımlılıkları'nı seçin. MVC iskelesi için iki seçenek vardır; En Az ve Tam. En Az'ı seçerseniz projenize yalnızca ASP.NET MVC için NuGet paketleri ve başvuruları eklenir. Tam seçeneğini belirlerseniz, MVC projesi için gerekli içerik dosyalarının yanı sıra Minimum bağımlılıklar eklenir.

Zaman uyumsuz denetleyicilerin iskelesini oluşturma desteği, Entity Framework 6'nın yeni zaman uyumsuz özelliklerini kullanır.

Daha fazla bilgi ve öğretici için bkz. ASP.NET yapı iskelelerine genel bakış.

Yeni Tarayıcı Bağlantısı özelliği, birden çok tarayıcıyı Visual Studio'ya bağlamanızı ve araç çubuğundaki bir düğmeye tıklayarak tümünü yenilemenizi sağlar. Geliştirme sitenize mobil öykünücüler de dahil olmak üzere birden çok tarayıcı bağlayabilir ve yenile'ye tıklayarak tüm tarayıcıları aynı anda yenileyebilirsiniz. Tarayıcı Bağlantısı ayrıca geliştiricilerin Tarayıcı Bağlantısı uzantıları yazmasına olanak tanıyan bir API'yi kullanıma sunar.

Açılan menüde Yenile simgesi ve Tarayıcı Bağlantısı Panosu vurgulanmış şekilde Visual Studio menüsünün ekran görüntüsü.

Geliştiricilerin Tarayıcı Bağlantısı API'sinin avantajlarından yararlanmasını sağlayarak Visual Studio ile bağlı tüm tarayıcılar arasındaki sınırları aşan çok gelişmiş senaryolar oluşturmak mümkün hale gelir. Web Essentials, Visual Studio ile tarayıcının geliştirici araçları, uzaktan denetimli mobil öykünücüler ve çok daha fazlası arasında tümleşik bir deneyim oluşturmak için API'den yararlanır.

Visual Studio Web Düzenleyicisi Geliştirmeleri

Visual Studio 2013, web uygulamalarında Razor dosyaları ve HTML dosyaları için yeni bir HTML düzenleyicisi içerir. Yeni HTML düzenleyicisi, HTML5 tabanlı tek bir birleşik şema sağlar. Otomatik küme ayracı tamamlama, jQuery kullanıcı arabirimi ve AngularJS özniteliği IntelliSense, öznitelik IntelliSense Gruplandırma, kimlik ve sınıf adı IntelliSense ve daha iyi performans, biçimlendirme ve SmartTag'ler gibi diğer iyileştirmelere sahiptir.

Aşağıdaki ekran görüntüsünde, HTML düzenleyicisinde Bootstrap özniteliği IntelliSense'in kullanılması gösterilmektedir.

HTML düzenleyicisinde IntelliSense

Visual Studio 2013 hem CoffeeScript hem de LESS düzenleyicileri yerleşik olarak gelir. LESS düzenleyicisi, CSS düzenleyicisinin tüm harika özellikleriyle birlikte gelir ve zincirdeki tüm LESS belgelerinde değişkenler ve karışımlar için belirli IntelliSense'e @import sahiptir.

Visual Studio'da Azure App Service Web Apps Desteği

.NET 2.2 için Azure SDK ile Visual Studio 2013, uzak web uygulamalarınızla doğrudan etkileşime geçmek için Sunucu Gezgini'ni kullanabilirsiniz. Azure hesabınızda oturum açabilir, yeni web uygulamaları oluşturabilir, uygulamaları yapılandırabilir, gerçek zamanlı günlükleri görüntüleyebilir ve daha fazlasını yapabilirsiniz. SDK 2.2 yayımlandıktan kısa bir süre sonra Azure'da uzaktan hata ayıklama modunda çalışabileceksiniz. Azure App Service Web Apps için yeni özelliklerin çoğu, .NET için Azure SDK'nın geçerli sürümünü yüklediğinizde Visual Studio 2012'de de çalışır.

Daha fazla bilgi için aşağıdaki kaynaklara bakın:

Web Yayımlama Geliştirmeleri

Visual Studio 2013 yeni ve gelişmiş Web Yayımlama özellikleri içerir. Bunlardan birkaçı şunlardır:

ASP.NET web dağıtımı hakkında daha fazla bilgi için ASP.NET sitesine bakın.

NuGet 2.7

NuGet 2.7, NuGet 2.7 Sürüm Notları'nda ayrıntılı olarak açıklanan zengin bir dizi yeni özellik içerir.

NuGet'in bu sürümü, paketleri indirmek için NuGet'in paket geri yükleme özelliği için açık onay sağlama gereksinimini de ortadan kaldırır. Onay (ve NuGet'in tercihler iletişim kutusundaki ilişkili onay kutusu) artık NuGet yüklenerek verilir. Artık paket geri yükleme işlemi varsayılan olarak çalışır.

ASP.NET Web Forms

Bir ASP.NET

Web Forms proje şablonları yeni One ASP.NET deneyimiyle sorunsuz bir şekilde tümleştirilir. Web Forms projenize MVC ve Web API desteği ekleyebilir ve One ASP.NET proje oluşturma sihirbazını kullanarak kimlik doğrulamasını yapılandırabilirsiniz. Daha fazla bilgi için bkz. Visual Studio 2013'da ASP.NET Web Projeleri Oluşturma.

ASP.NET Kimlik

Web Forms proje şablonları yeni ASP.NET Identity çerçevesini destekler. Ayrıca, şablonlar artık bir Web Forms intranet projesinin oluşturulmasını destekliyor. Daha fazla bilgi için bkz. Visual Studio 2013'da ASP.NET Web Projeleri Oluşturma bölümündekiKimlik Doğrulama Yöntemleri.

Bootstrap

Web Forms şablonları kolayca özelleştirebileceğiniz şık ve duyarlı bir görünüm sağlamak için Bootstrap kullanır. Daha fazla bilgi için bkz. Visual Studio 2013 web projesi şablonlarındaki Bootstrap.

ASP.NET MVC 5

Bir ASP.NET

Web MVC proje şablonları, yeni One ASP.NET deneyimiyle sorunsuz bir şekilde tümleştirilir. One ASP.NET proje oluşturma sihirbazını kullanarak MVC projenizi özelleştirebilir ve kimlik doğrulamasını yapılandırabilirsiniz. MVC 5'i ASP.NET için giriş niteliğindeki bir öğretici, ASP.NET MVC 5 ile Çalışmaya Başlama bölümünde bulunabilir.

MVC 4 projelerini MVC 5'e yükseltme hakkında bilgi için bkz. ASP.NET MVC 4 ve Web API Projesini MVC 5 ve Web API 2'ye ASP.NET yükseltme.

ASP.NET Kimlik

MVC proje şablonları kimlik doğrulaması ve kimlik yönetimi için ASP.NET Kimliği kullanacak şekilde güncelleştirildi. Facebook ve Google kimlik doğrulamasını ve yeni üyelik API'sini içeren bir öğretici, Facebook ve Google OAuth2 ile ASP.NET MVC 5 Uygulaması oluşturma ve OpenID Oturum Açma veauth ve SQL DB ile ASP.NET MVC uygulaması oluşturma ve Azure App Service dağıtma sayfasında bulunabilir.

Bootstrap

MVC proje şablonu, kolayca özelleştirebileceğiniz şık ve duyarlı bir görünüm sağlamak için Bootstrap'ı kullanacak şekilde güncelleştirildi. Daha fazla bilgi için bkz. Visual Studio 2013 web projesi şablonlarındaki Bootstrap.

Kimlik doğrulama filtreleri

Kimlik doğrulama filtreleri ASP.NET MVC'de ASP.NET MVC işlem hattında yetkilendirme filtrelerinden önce çalışan ve tüm denetleyiciler için eylem başına, denetleyici başına veya genel olarak kimlik doğrulama mantığı belirtmenize olanak sağlayan yeni bir filtre türüdür. Kimlik doğrulama filtreleri istekteki kimlik bilgilerini işler ve karşılık gelen bir sorumlu sağlar. Kimlik doğrulama filtreleri, yetkisiz isteklere yanıt olarak kimlik doğrulama zorlukları da ekleyebilir.

Filtre geçersiz kılmaları

Artık geçersiz kılma filtresi belirterek belirli bir eylem yöntemine veya denetleyiciye hangi filtrelerin uygulanacağını geçersiz kılabilirsiniz. Geçersiz kılma filtreleri, belirli bir kapsam (eylem veya denetleyici) için çalıştırılmaması gereken filtre türleri kümesini belirtir. Bu, genel olarak uygulanan ancak ardından belirli genel filtrelerin belirli eylemlere veya denetleyicilere uygulanmasını dışlayan filtreler yapılandırmanıza olanak tanır.

Öznitelik yönlendirme

ASP.NET MVC artık özniteliği yönlendirmeyi destekliyor, bunun yazarı Tim McCall'ın katkıları http://attributerouting.netsayesinde. Öznitelik yönlendirme ile eylemlerinize ve denetleyicilerinize açıklama ekleyerek yollarınızı belirtebilirsiniz.

ASP.NET Web API 2

Öznitelik yönlendirme

ASP.NET Web API'sinin yazarı Tim McCall'ın katkıları sayesinde artık öznitelik yönlendirmeyi http://attributerouting.netdestekliyor. Öznitelik yönlendirme ile, eylemlerinize ve denetleyicilerinize aşağıdaki gibi ek açıklama ekleyerek Web API'nizin yollarını belirtebilirsiniz:

[RoutePrefix("orders")] 
public class OrdersController : ApiController 
{ 
    [Route("{id}")] 
    public Order Get(int id) { } 
    [Route("{id}/approve")] 
    public Order Approve(int id) { } 
}

Öznitelik yönlendirme, web API'nizdeki URI'ler üzerinde daha fazla denetim sağlar. Örneğin, tek bir API denetleyicisi kullanarak kolayca bir kaynak hiyerarşisi tanımlayabilirsiniz:

public class MoviesController : ApiController 
{ 
    [Route("movies")] 
    public IEnumerable<Movie> Get() { } 
    [Route("actors/{actorId}/movies")] 
    public IEnumerable<Movie> GetByActor(int actorId) { } 
    [Route("directors/{directorId}/movies")] 
    public IEnumerable<Movie> GetByDirector(int directorId) { } 
}

Öznitelik yönlendirme isteğe bağlı parametreleri, varsayılan değerleri ve yol kısıtlamalarını belirtmek için kullanışlı bir söz dizimi de sağlar:

// Optional parameter
[Route("people/{name?}")]
// Default value
[Route("people/{name=Dan}")]
// Constraint: Alphabetic characters only. 
[Route("people/{name:alpha}")]

Öznitelik yönlendirme hakkında daha fazla bilgi için bkz. Web API 2'de Öznitelik Yönlendirme.

OAuth 2.0

Web API'si ve Tek Sayfalı Uygulama proje şablonları artık OAuth 2.0 kullanarak yetkilendirmeyi destekliyor. OAuth 2.0, korumalı kaynaklara istemci erişimini yetkilendirmeye yönelik bir çerçevedir. Tarayıcılar ve mobil cihazlar da dahil olmak üzere çeşitli istemciler için çalışır.

OAuth 2.0 desteği, taşıyıcı kimlik doğrulaması ve yetkilendirme sunucusu rolünü uygulamak için Microsoft OWIN Bileşenleri tarafından sağlanan yeni güvenlik ara yazılımını temel alır. Alternatif olarak, istemciler Windows Server 2012 R2'de Azure Active Directory veya ADFS gibi bir kuruluş yetkilendirme sunucusu kullanılarak yetkilendirilebilir.

OData Geliştirmeleri

$select, $expand, $batch ve $value desteği

ASP.NET Web API'sinde OData artık $select, $expand ve $value için tam desteğe sahiptir. değişiklik kümelerinin istek toplu işlemi ve işlenmesi için de $batch kullanabilirsiniz.

$select ve $expand seçenekleri, OData uç noktasından döndürülen verilerin şeklini değiştirmenize olanak sağlar. Daha fazla bilgi için bkz. Web API OData'da $select ve $expand desteğine giriş.

Geliştirilmiş genişletilebilirlik

OData biçimlendiricileri artık genişletilebilir. Atom girişi meta verileri ekleyebilir, adlandırılmış akış ve medya bağlantısı girdilerini destekleyebilir, örnek ek açıklamaları ekleyebilir ve bağlantıların nasıl oluşturulduğunu özelleştirebilirsiniz.

Türü olmayan destek

Artık varlık türleriniz için CLR türleri tanımlamaya gerek kalmadan OData hizmetleri oluşturabilirsiniz. Bunun yerine, OData denetleyicileriniz OData biçimlendiricileri seri hale getirme/seri durumdan çıkarma olan IEdmObject örneklerini alabilir veya döndürebilir.

Mevcut modeli yeniden kullanma

Zaten var olan bir varlık veri modeliniz (EDM) varsa, artık yeni bir tane oluşturmak yerine doğrudan yeniden kullanabilirsiniz. Örneğin, Entity Framework kullanıyorsanız EF'nin sizin için derlediğiniz EDM'yi kullanabilirsiniz.

İstek Toplu İşlemi

İstek toplu işleme, ağ trafiğini azaltmak ve daha sorunsuz, daha az sohbet eden bir kullanıcı arabirimi sağlamak için birden çok işlemi tek bir HTTP POST isteğinde birleştirir. ASP.NET Web API'sinde artık istek toplu işlemi için çeşitli stratejiler desteklemektedir:

  • OData hizmetinin $batch uç noktasını kullanın.
  • Birden çok isteği tek bir MIME çok parçalı istekte paketle.
  • Özel bir toplu iş biçimi kullanın.

İstek toplu işlemini etkinleştirmek için Web API yapılandırmanıza toplu işlem işleyicisi içeren bir yol eklemeniz yeterlidir:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
        config.Routes.MapHttpBatchRoute( 
            routeName: "WebApiBatch", 
            routeTemplate: "api/batch", 
            batchHandler: new DefaultHttpBatchHandler(GlobalConfiguration.DefaultServer)); 
    } 
}

Ayrıca isteklerin veya yürütmenin sıralı olarak mı yoksa herhangi bir sırada mı olduğunu da denetleyebilirsiniz.

Taşınabilir ASP.NET Web API İstemcisi

Artık ASP.NET Web API İstemcisi'ni kullanarak Windows Mağazası ve Windows Phone 8 uygulamalarınızda çalışan taşınabilir sınıf kitaplıkları oluşturabilirsiniz. İstemci ve sunucu arasında paylaşılabilen taşınabilir biçimlendiriciler de oluşturabilirsiniz.

Geliştirilmiş Test Edilebilirlik

Web API 2, API denetleyicilerinizin birim testini çok daha kolay hale getirir. API denetleyicinizin örneğini istek iletiniz ve yapılandırmanızla oluşturun ve ardından test etmek istediğiniz eylem yöntemini çağırın. Bağlantı oluşturma işlemi gerçekleştiren eylem yöntemleri için UrlHelper sınıfıyla alay etmek de kolaydır.

IHttpActionResult

Artık Web API eylem yöntemlerinizin sonucunu kapsüllemek için IHttpActionResult uygulayabilirsiniz. Bir Web API eylem yönteminden döndürülen bir IHttpActionResult, sonuçta elde edilen yanıt iletisini oluşturmak için ASP.NET Web API çalışma zamanı tarafından yürütülür. Web API uygulamanızın birim testini basitleştirmek için herhangi bir Web API eyleminden IHttpActionResult döndürülebilir. Kolaylık sağlamak için belirli durum kodlarının, biçimlendirilmiş içeriğin veya içerikle anlaşmalı yanıtların döndürülme sonuçları dahil olmak üzere bir dizi IHttpActionResult uygulaması kullanıma hazır olarak sağlanır.

HttpRequestContext

Yeni HttpRequestContext , isteğe bağlı olan ancak istekten hemen ulaşılmayan tüm durumları izler. Örneğin, yönlendirme verilerini, istekle ilişkili sorumluyu, istemci sertifikasını, UrlHelper'ı ve sanal yol kökünü almak için HttpRequestContext kullanabilirsiniz. Birim testi amacıyla kolayca bir HttpRequestContext oluşturabilirsiniz.

İsteğin sorumlusu Thread.CurrentPrincipal'a güvenmek yerine istekle birlikte akıtıldığından, sorumlu artık Web API'sinin işlem hattında olduğu süre boyunca isteğin ömrü boyunca kullanılabilir.

CORS

Brock Allen'ın bir diğer büyük katkısı sayesinde ASP.NET artık Çıkış Noktaları Arası İstek Paylaşımı'nı (CORS) tam olarak destekliyor.

Tarayıcı güvenliği, bir web sitesinin başka bir etki alanına AJAX istekleri göndermesini engeller. CORS , bir sunucunun aynı kaynak ilkesini gevşetmesini sağlayan bir W3C standardıdır. Bir sunucu CORS kullanarak bazı çıkış noktaları arası isteklere izin verirken diğerlerini reddedebilir.

Web API 2 artık denetim öncesi isteklerinin otomatik olarak işlenmesi de dahil olmak üzere CORS'yi destekliyor. Daha fazla bilgi için bkz . ASP.NET Web API'sinde Çıkış Noktaları Arası İstekleri Etkinleştirme.

Kimlik Doğrulama Filtreleri

Kimlik doğrulama filtreleri, ASP.NET Web API'sinde ASP.NET Web API işlem hattında yetkilendirme filtrelerinden önce çalışan ve tüm denetleyiciler için eylem başına, denetleyici başına veya genel olarak kimlik doğrulama mantığı belirtmenize olanak sağlayan yeni bir filtre türüdür. Kimlik doğrulama filtreleri istekteki kimlik bilgilerini işler ve karşılık gelen bir sorumlu sağlar. Kimlik doğrulama filtreleri, yetkisiz isteklere yanıt olarak kimlik doğrulama zorlukları da ekleyebilir.

Filtre Geçersiz Kılmaları

Artık geçersiz kılma filtresi belirterek belirli bir eylem yöntemine veya denetleyiciye hangi filtrelerin uygulanacağını geçersiz kılabilirsiniz. Geçersiz kılma filtreleri, belirli bir kapsam (eylem veya denetleyici) için çalıştırılmaması gereken filtre türleri kümesini belirtir. Bu, genel filtreler eklemenize olanak tanır, ancak sonra bazılarını belirli eylemlerin veya denetleyicilerin dışında tutmanızı sağlar.

OWIN Tümleştirmesi

ASP.NET Web API'si artık OWIN'i tam olarak desteklemektedir ve OWIN özellikli herhangi bir konakta çalıştırılabilir. Ayrıca, OWIN kimlik doğrulama sistemiyle tümleştirme sağlayan bir HostAuthenticationFilter da dahildir.

OWIN tümleştirmesiyle, SignalR gibi diğer OWIN ara yazılımıyla birlikte kendi işleminizde Web API'sini barındırabilirsiniz. Daha fazla bilgi için bkz. Web API'sini Self-Host ASP.NET için OWIN kullanma.

ASP.NET SignalR 2.0

Aşağıdaki bölümlerde SignalR 2.0'ın özellikleri açıklanmaktadır.

Mevcut bir 1.x projesini SignalR 2.0'a yükseltme örneği için bkz . SignalR 1.x Projesini Yükseltme.

OWIN üzerine kurulmuştur

SignalR 2.0 tamamen OWIN (.NET için Açık Web Arabirimi) üzerine kurulmuştur. Bu değişiklik, Web'de barındırılan ve şirket içinde barındırılan SignalR uygulamaları arasında SignalR için kurulum işlemini çok daha tutarlı hale getirir, ancak bir dizi API değişikliği de gerektirmiştir.

MapHub'lar ve MapConnection artık MapSignalR

OWIN standartlarıyla uyumluluk için bu yöntemler olarak yeniden adlandırıldı MapSignalR. MapSignalR parametresiz olarak çağrılır, tüm hub'ları eşler (sürüm 1.x'te olduğu gibi MapHubs ); tek tek PersistentConnection nesnelerini eşlemek için bağlantı türünü tür parametresi olarak ve bağlantının URL uzantısını ilk bağımsız değişken olarak belirtin.

MapSignalR yöntemi bir Owin başlangıç sınıfında çağrılır. Visual Studio 2013 Owin başlangıç sınıfı için yeni bir şablon içerir; bu şablonu kullanmak için aşağıdakileri yapın:

  1. Projeye sağ tıklayın
  2. Ekle, Yeni Öğe... öğesini seçin.
  3. Owin Başlangıç sınıfı'ı seçin. Yeni sınıfa Startup.cs adını verin.

Bir Web uygulamasında, yöntemini içeren MapSignalR Owin başlangıç sınıfı aşağıda gösterildiği gibi Web.Config dosyasının uygulama ayarları düğümünde bir giriş kullanılarak Owin'in başlangıç işlemine eklenir.

Şirket içinde barındırılan bir uygulamada Startup sınıfı yöntemin tür parametresi WebApp.Start olarak geçirilir.

SignalR 1.x'teki eşleme hub'ları ve bağlantıları (web uygulamasındaki genel uygulama dosyasından):

protected void Application_Start(object sender, EventArgs e) 
{
    // Map all hubs to "/signalr"
    RouteTable.Routes.MapHubs();
    // Map the Echo PersistentConnection to "/echo"
    RouteTable.Routes.MapConnection<myconnection>("echo", "/echo");
}

SignalR 2.0'daki eşleme hub'ları ve bağlantıları (Owin Startup sınıf dosyasından):

using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(MyWebApplication.Startup))]

namespace MyWebApplication
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Map all hubs to "/signalr"
            app.MapSignalR();
            // Map the Echo PersistentConnection to "/echo"
            app.MapSignalR<echoconnection>("/echo");
        }
    }
}

Şirket içinde barındırılan bir uygulamada Startup sınıfı, aşağıda gösterildiği gibi yöntemin WebApp.Start tür parametresi olarak geçirilir.

string url = "http://localhost:8080";
using (WebApp.Start<startup>(url))
{
    Console.WriteLine("Server running on {0}", url);
    Console.ReadLine();
}

Etki Alanları Arası Destek

SignalR 1.x'te etki alanları arası istekler tek bir EnableCrossDomain bayrağı tarafından denetlendi. Bu bayrak hem JSONP hem de CORS isteklerini denetledi. Daha fazla esneklik için tüm CORS desteği SignalR'nin sunucu bileşeninden kaldırılmıştır (Tarayıcının desteklediği algılanırsa JavaScript istemcileri hala CORS'yi normal şekilde kullanır) ve bu senaryoları desteklemek için yeni OWIN ara yazılımı kullanıma sunulmuştur.

SignalR 2.0'da, istemcide JSONP gerekliyse (eski tarayıcılarda etki alanları arası istekleri desteklemek için), nesnesinde HubConfigurationtrueaşağıda gösterildiği gibi olarak ayarlanarak EnableJSONP açıkça etkinleştirilmesi gerekir. JSONP, CORS'den daha az güvenli olduğundan varsayılan olarak devre dışıdır.

SignalR 2.0'da yeni CORS ara yazılımını eklemek için kitaplığı projenize ekleyin Microsoft.Owin.Cors ve aşağıdaki bölümde gösterildiği gibi SignalR ara yazılımınızdan önce çağrısı UseCors yapın.

Projenize Microsoft.Owin.Cors ekleme: Bu kitaplığı yüklemek için Paket Yöneticisi Konsolu'nda aşağıdaki komutu çalıştırın:

Install-Package Microsoft.Owin.Cors

Bu komut, paketin 2.0.0 sürümünü projenize ekler.

UseCors Çağırma

Aşağıdaki kod parçacıkları SignalR 1.x ve 2.0'da etki alanları arası bağlantıların nasıl uygulanduğunu göstermektedir.

SignalR 1.x'te etki alanları arası istekleri uygulama (genel uygulama dosyasından)

protected void Application_Start(object sender, EventArgs e) 
{
    var hubConfiguration = new HubConfiguration();
    hubConfiguration.EnableCrossDomain = true;
    RouteTable.Routes.MapHubs(hubConfiguration);
}

SignalR 2.0'da etki alanları arası istekleri uygulama (C# kod dosyasından)

Aşağıdaki kod bir SignalR 2.0 projesinde CORS veya JSONP'nin nasıl etkinleştirileceği gösterilmektedir. Bu kod örneği, VE yerine MapSignalRkullanır RunSignalRMap, böylece CORS ara yazılımı yalnızca CORS desteği gerektiren SignalR istekleri için çalışır (içinde belirtilen MapSignalRyoldaki tüm trafik yerine) Map uygulamanın tamamı için değil, belirli bir URL ön eki için çalıştırılması gereken diğer ara yazılımlarda da kullanılabilir.

using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Cors;
using Owin;

[assembly: OwinStartup(typeof(MyWebApplication.Startup))]

namespace MyWebApplication
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Branch the pipeline here for requests that start with "/signalr"
            app.Map("/signalr", map =>
            {
                // Setup the CORS middleware to run before SignalR.
                // By default this will allow all origins. You can 
                // configure the set of origins and/or http verbs by
                // providing a cors options with a different policy.
                map.UseCors(CorsOptions.AllowAll);
                var hubConfiguration = new HubConfiguration 
                {
                    // You can enable JSONP by uncommenting line below.
                    // JSONP requests are insecure but some older browsers (and some
                    // versions of IE) require JSONP to work cross domain
                    // EnableJSONP = true
                };
                // Run the SignalR pipeline. We're not using MapSignalR
                // since this branch already runs under the "/signalr"
                // path.
                map.RunSignalR(hubConfiguration);
            });
        }
    }
}

MonoTouch ve MonoDroid aracılığıyla iOS ve Android desteği

Xamarin kitaplığından MonoTouch ve MonoDroid bileşenleri kullanan iOS ve Android istemcileri için destek eklendi. Bunların nasıl kullanılacağı hakkında daha fazla bilgi için bkz. Xamarin Bileşenlerini Kullanma. SignalR RTW sürümü kullanılabilir olduğunda bu bileşenler Xamarin Store'da kullanılabilir olacaktır.

### Taşınabilir .NET istemcisi

Platformlar arası geliştirmeyi daha iyi kolaylaştırmak için Silverlight, WinRT ve Windows Phone istemcileri, aşağıdaki platformları destekleyen tek bir taşınabilir .NET istemcisiyle değiştirilmiştir:

  • NET 4.5
  • Silverlight 5
  • WinRT (Windows Mağazası Uygulamaları için.NET)
  • Windows Phone 8

Yeni Self-Host Paketi

SignalR Self-Host (web sunucusunda barındırılmak yerine bir işlemde veya başka bir uygulamada barındırılan SignalR uygulamaları) kullanmaya başlamayı kolaylaştıran bir NuGet paketi artık vardır. SignalR 1.x ile oluşturulan bir kendi kendine konak projesini yükseltmek için Microsoft.AspNet.SignalR.Owin paketini kaldırın ve Microsoft.AspNet.SignalR.SelfHost paketini ekleyin. Kendi kendine konak paketini kullanmaya başlama hakkında daha fazla bilgi için bkz . Öğretici: SignalR Self-Host.

Geriye dönük uyumlu sunucu desteği

SignalR'nin önceki sürümlerinde, istemcide kullanılan SignalR paketinin sürümleri ile sunucunun aynı olması gerekiyordu. SignalR 2.0, güncelleştirilmesi zor olan kalın istemci uygulamalarını desteklemek için artık eski bir istemciyle daha yeni bir sunucu sürümü kullanmayı destekliyor. Not: SignalR 2.0, daha yeni istemcilere sahip eski sürümlerle oluşturulmuş sunucuları desteklemez.

.NET 4.0 için sunucu desteği kaldırıldı

SignalR 2.0, .NET 4.0 ile sunucu birlikte çalışabilirliği desteğini bıraktı. .NET 4.5, SignalR 2.0 sunucularıyla kullanılmalıdır. SignalR 2.0 için hala bir .NET 4.0 istemcisi vardır.

İstemciler ve gruplar listesine ileti gönderme

SignalR 2.0'da istemci ve grup kimliklerinin listesini kullanarak ileti göndermek mümkündür. Aşağıdaki kod parçacıkları bunun nasıl yapılacağını gösterir.

PersistentConnection kullanarak istemciler ve gruplar listesine ileti gönderme

using Microsoft.AspNet.SignalR;
using System.Collections.Generic;
public class ChatConnection : PersistentConnection
{
    static List<string> ConnectionIds = new List<string>();
    static List<string> groups = new List<string>{"chatGroup", "chatGroup2"};
    protected override System.Threading.Tasks.Task OnReceived(IRequest request, string connectionId, string data)
    {
        Connection.Send(ConnectionIds, data);
        Groups.Send(groups, data);
        return base.OnReceived(request, connectionId, data);
    }
    protected override System.Threading.Tasks.Task OnConnected(IRequest request, string connectionId)
    {
        ConnectionIds.Add(connectionId);
        Groups.Add(connectionId, "chatGroup");
        return base.OnConnected(request, connectionId);
    }
    protected override System.Threading.Tasks.Task OnDisconnected(IRequest request, string connectionId)
    {
        ConnectionIds.Remove(connectionId);
        return base.OnDisconnected(request, connectionId);
    }
}

Hub'ları kullanarak istemciler ve gruplar listesine ileti gönderme

using Microsoft.AspNet.SignalR;
using System.Collections.Generic;
public class ChatHub : Hub
{
    static List<string> ConnectionIds = new List<string>();
    static List<string> groups = new List<string> { "chatGroup", "chatGroup2" };
    public void Send(string name, string message)
    {
        // Call the broadcastMessage method to update clients.
        Clients.Clients(ConnectionIds).broadcastMessage(name, message);
        Clients.Groups(groups).broadcastMessage(name, message);
    }
    public override System.Threading.Tasks.Task OnConnected()
    {
        ConnectionIds.Add(Context.ConnectionId);
        Groups.Add(Context.ConnectionId, "chatGroup");
        return base.OnConnected();
    }
    public override System.Threading.Tasks.Task OnDisconnected()
    {
        ConnectionIds.Remove(Context.ConnectionId);
        return base.OnDisconnected();
    }
}

Belirli bir kullanıcıya ileti gönderme

Bu özellik, kullanıcıların yeni bir IUserIdProvider arabirimi aracılığıyla bir IRequest'i temel alan userId değerini belirtmesine olanak tanır:

IUserIdProvider arabirimi

public interface IUserIdProvider
{
    string GetUserId(IRequest request);
}

Varsayılan olarak, kullanıcı adı olarak kullanıcının IPrincipal.Identity.Name kullanan bir uygulama olacaktır.

Hub'larda bu kullanıcılara yeni bir API aracılığıyla ileti gönderebileceksiniz:

Clients.User API'sini kullanma

public class MyHub : Hub
{
    public void Send(string userId, string message)
    {
        Clients.User(userId).send(message);
    }
}

Daha İyi Hata İşleme Desteği

Kullanıcılar artık herhangi bir hub çağrısından HubException oluşturabilir. HubException oluşturucu bir dize iletisi ve nesne ek hata verileri alabilir. SignalR, özel durumu otomatik olarak seri hale getirerek hub yöntemi çağrısını reddetmek/başarısız yapmak için kullanacağı istemciye gönderir.

Ayrıntılı hub özel durumlarını göster ayarının istemciye geri gönderilen Veya gönderilmeyen HubException'ı hiçbir etkisi yoktur; her zaman gönderilir.

İstemciye HubException göndermeyi gösteren sunucu tarafı kodu

public class MyHub : Hub
{
    public void Send(string message)
    {
        if(message.Contains("<script>"))
        {
            throw new HubException("This message will flow to the client", new { user = Context.User.Identity.Name, message = message });
        }

        Clients.All.send(message);
    }
}

Sunucudan gönderilen HubException'a yanıt vermeyi gösteren JavaScript istemci kodu

myHub.server.send("<script>")
            .fail(function (e) {
                if (e.source === 'HubException') {
                    console.log(e.message + ' : ' + e.data.user);
                }
            });

Sunucudan gönderilen HubException'a yanıt vermeyi gösteren .NET istemci kodu

try
{
    await myHub.Invoke("Send", "<script>");
}
catch(HubException ex)
{
    Conosle.WriteLine(ex.Message);
}

Hub'ların daha kolay birim testi

SignalR 2.0, sahte istemci tarafı çağrıları oluşturmayı kolaylaştıran Hubs adlı IHubCallerConnectionContext bir arabirim içerir. Aşağıdaki kod parçacıkları, popüler test kulpları xUnit.net ve moq ile bu arabirimin kullanılmasını göstermektedir.

xUnit.net ile SignalR birim testi

[Fact]
public void HubsAreMockableViaDynamic()
{
    bool sendCalled = false;
    var hub = new MyHub();
    var mockClients = new Mock<IHubCallerConnectionContext>();
    hub.Clients = mockClients.Object;
    dynamic all = new ExpandoObject();
    all.send = new Action<string>(message =>
    {
        sendCalled = true;
    });
    mockClients.Setup(m => m.All).Returns((ExpandoObject)all);
    hub.Send("foo");
    Assert.True(sendCalled);
}

Moq ile SignalR birim testi

[Fact]
public interface IClientContract
{
    void send(string message);
}
public void HubsAreMockableViaType()
{
    var hub = new MyHub();
    var mockClients = new Mock<IHubCallerConnectionContext>();
    var all = new Mock<IClientContract>();
    hub.Clients = mockClients.Object;
    all.Setup(m => m.send(It.IsAny<string>())).Verifiable();
    mockClients.Setup(m => m.All).Returns(all.Object);
    hub.Send("foo");
    all.VerifyAll();

JavaScript hata işleme

SignalR 2.0'da tüm JavaScript hata işleme geri çağırmaları ham dizeler yerine JavaScript hata nesneleri döndürür. Bu, SignalR'nin hata işleyicilerinize daha zengin bilgi akışı yapmasını sağlar. Hatanın özelliğinden source iç özel durumu alabilirsiniz.

Start.Fail özel durumunu işleyen JavaScript istemci kodu

connection.start().fail(function(e) {
    console.log('The error is: ' + e.message);
});

ASP.NET Kimlik

Yeni ASP.NET Üyelik Sistemi

ASP.NET Identity, ASP.NET uygulamaları için yeni üyelik sistemidir. ASP.NET Identity, kullanıcıya özgü profil verilerini uygulama verileriyle tümleştirmeyi kolaylaştırır. ASP.NET Kimliği, uygulamanızdaki kullanıcı profilleri için kalıcılık modelini seçmenize de olanak tanır. Verileri bir SQL Server veritabanında veya Azure Depolama Tabloları gibi NoSQL veri depoları da dahil olmak üzere başka bir veri deposunda depolayabilirsiniz. Daha fazla bilgi için bkz. Visual Studio 2013'da ASP.NET Web Projeleri Oluşturma bölümündeBireysel Kullanıcı Hesapları.

Beyana dayalı kimlik doğrulama

ASP.NET artık kullanıcının kimliğinin güvenilen bir verenden gelen talep kümesi olarak temsil edildiği talep tabanlı kimlik doğrulamasını destekliyor. Kullanıcıların kimliği, uygulama veritabanında tutulan bir kullanıcı adı ve parola kullanılarak veya sosyal kimlik sağlayıcıları (örneğin: Microsoft Hesapları, Facebook, Google, Twitter) kullanılarak veya Azure Active Directory veya Active Directory Federasyon Hizmetleri (AD FS) (ADFS) aracılığıyla kuruluş hesapları kullanılarak doğrulanabilir.

Azure Active Directory ve Windows Server Active Directory ile tümleştirme

Artık kimlik doğrulaması için Azure Active Directory veya Windows Server Active Directory (AD) kullanan ASP.NET projeleri oluşturabilirsiniz. Daha fazla bilgi için bkz. Visual Studio 2013'da ASP.NET Web Projeleri Oluşturma bölümündeKuruluş Hesapları.

OWIN Tümleştirmesi

ASP.NET kimlik doğrulaması artık OWIN tabanlı herhangi bir konakta kullanılabilen OWIN ara yazılımını temel alır. OWIN hakkında daha fazla bilgi için aşağıdaki Microsoft OWIN Bileşenleri bölümüne bakın.

Microsoft OWIN Bileşenleri

.NET için Açık Web Arabirimi (OWIN), .NET web sunucuları ve web uygulamaları arasında bir soyutlama tanımlar. OWIN web uygulamasını sunucudan ayrıştırarak web uygulamalarını konaktan bağımsız hale getirir. Örneğin, OWIN tabanlı bir web uygulamasını IIS'de barındırabilir veya özel bir işlemde kendi kendine barındırabilirsiniz.

Microsoft OWIN bileşenlerinde (Katana projesi olarak da bilinir) sunulan değişiklikler arasında yeni sunucu ve konak bileşenleri, yeni yardımcı kitaplıklar ve ara yazılım ve yeni kimlik doğrulama ara yazılımı yer alır.

OWIN ve Katana hakkında daha fazla bilgi için bkz . OWIN ve Katana'daki yenilikler.

Not: OWIN uygulamaları IIS klasik modunda çalıştırılamaz; tümleşik modda çalıştırılmalıdır.

Not: OWIN uygulamaları tam güven içinde çalıştırılmalıdır.

Yeni Sunucular ve Konaklar

Bu sürümle birlikte, kendi kendine konak senaryolarını etkinleştirmek için yeni bileşenler eklendi. Bu bileşenler aşağıdaki NuGet paketlerini içerir:

  • Microsoft.Owin.Host.HttpListener. HTTP isteklerini dinlemek ve OWIN işlem hattına yönlendirmek için HttpListener kullanan bir OWIN sunucusu sağlar.
  • Microsoft.Owin.Hosting Konsol uygulaması veya Windows hizmeti gibi özel bir işlemde bir OWIN işlem hattını kendi kendine barındırmak isteyen geliştiriciler için bir kitaplık sağlar.
  • OwinHost. Sarmalayan Microsoft.Owin.Hosting ve özel bir konak uygulaması yazmak zorunda kalmadan bir OWIN işlem hattını kendi kendine barındırmanıza olanak tanıyan tek başına bir yürütülebilir dosya sağlar.

Buna ek olarak, Microsoft.Owin.Host.SystemWeb paket artık ara yazılımın SystemWeb sunucusuna belirli bir ASP.NET işlem hattı aşamasında ara yazılımın çağrılması gerektiğini belirten ipuçları sağlamasını sağlar. Bu özellik, ASP.NET işlem hattının erken aşamalarında çalışması gereken kimlik doğrulama ara yazılımı için özellikle kullanışlıdır.

Yardımcı Kitaplıklar ve Ara Yazılım

OWIN belirtiminden yalnızca işlev ve tür tanımlarını kullanarak OWIN bileşenleri yazabilirsiniz, ancak yeni Microsoft.Owin paket daha kolay bir soyutlama kümesi sağlar. Bu paket, önceki birkaç paketi (örneğin, Owin.Extensions, Owin.Types) diğer OWIN bileşenleri tarafından kolayca kullanılabilecek, iyi yapılandırılmış tek bir nesne modelinde birleştirir. Aslında, Microsoft OWIN bileşenlerinin çoğu artık bu paketi kullanıyor.

Not

OWIN uygulamaları IIS klasik modunda çalıştırılamaz; tümleşik modda çalıştırılmalıdır.

Not

OWIN uygulamaları tam güven içinde çalıştırılmalıdır.

Bu sürüm, çalışan bir OWIN uygulamasını doğrulamak için ara yazılımı ve hataları araştırmaya yardımcı olmak için hata sayfası ara yazılımını içeren Microsoft.Owin.Diagnostics paketini de içerir.

Kimlik Doğrulama Bileşenleri

Aşağıdaki kimlik doğrulama bileşenleri kullanılabilir.

  • Microsoft.Owin.Security.ActiveDirectory. Şirket içi veya bulut tabanlı dizin hizmetlerini kullanarak kimlik doğrulamasını etkinleştirir.
  • Microsoft.Owin.Security.Cookies Tanımlama bilgilerini kullanarak kimlik doğrulamasını etkinleştirir. Bu paket daha önce olarak adlandırıldı Microsoft.Owin.Security.Forms.
  • Microsoft.Owin.Security.Facebook Facebook'un OAuth tabanlı hizmetini kullanarak kimlik doğrulamasını etkinleştirir.
  • Microsoft.Owin.Security.Google Google'ın OpenID tabanlı hizmetini kullanarak kimlik doğrulamasını etkinleştirir.
  • Microsoft.Owin.Security.Jwt JWT belirteçlerini kullanarak kimlik doğrulamasını etkinleştirir.
  • Microsoft.Owin.Security.MicrosoftAccount Microsoft hesaplarını kullanarak kimlik doğrulamasını etkinleştirir.
  • Microsoft.Owin.Security.OAuth. Taşıyıcı belirteçlerin kimliğini doğrulamak için bir OAuth yetkilendirme sunucusu ve ara yazılım sağlar.
  • Microsoft.Owin.Security.Twitter Twitter'ın OAuth tabanlı hizmetini kullanarak kimlik doğrulamasını etkinleştirir.

Bu sürüm, çıkış noktaları arası HTTP isteklerini işlemek için ara yazılımı içeren paketi de içerir Microsoft.Owin.Cors .

Not

Visual Studio 2013 son sürümünde JWT imzalama desteği kaldırıldı.

Entity Framework 6

Entity Framework 6'daki yeni özelliklerin ve diğer değişikliklerin listesi için bkz . Entity Framework Sürüm Geçmişi.

ASP.NET Razor 3

ASP.NET Razor 3 aşağıdaki yeni özellikleri içerir:

  • Sekme düzenleme desteği. Daha önce, Visual Studio'da Belgeyi Biçimlendir komutu, otomatik girintileme ve otomatik biçimlendirme , Sekmeleri Koru seçeneği kullanılırken düzgün çalışmıyor. Bu değişiklik, sekme biçimlendirmesi için Razor kodu için Visual Studio biçimlendirmesini düzeltmektedir.
  • Bağlantılar oluşturulurken URL Yeniden Yazma kuralları desteği.
  • Saydam güvenlik özniteliğinin kaldırılması.

    Not

    Bu hataya neden olan bir değişikliktir ve Razor 3'ün MVC4 ve önceki sürümleriyle uyumsuz olmasını sağlarken Razor 2, MVC5 veya MVC5'e karşı derlenmiş derlemelerle uyumsuzdur.

=======

ASP.NET Uygulama Askıya Alma

ASP.NET Uygulama Askıya Alma, .NET Framework 4.5.1'de çok sayıda ASP.NET sitesini tek bir makinede barındırmak için kullanıcı deneyimini ve ekonomik modeli önemli ölçüde değiştiren, oyun değiştiren bir özelliktir. Daha fazla bilgi için bkz. ASP.NET Uygulama Askıya Alma – duyarlı paylaşılan .NET web barındırma.

Bilinen Sorunlar ve Hataya Neden Olan Değişiklikler

Bu bölümde, Visual Studio 2013 için ASP.NET and Web Tools bilinen sorunlar ve hataya neden olan değişiklikler açıklanmaktadır.

NuGet

  • SLN dosyası kullanılırken Mono'da yeni paket geri yükleme çalışmıyor; gelecek nuget.exe indirme ve NuGet.CommandLine paket güncelleştirmesinde düzeltilecek.
  • Yeni paket geri yükleme, Wix projeleriyle çalışmaz; gelecek nuget.exe indirme ve NuGet.CommandLine paket güncelleştirmesinde düzeltilecektir.

ASP.NET Web API

  1. ODataQueryOptions<T>.ApplyTo(IQueryable)ve $expandiçin destek eklediğimiz için $select her zaman geri dönmezIQueryable<T>.

    için ODataQueryOptions<T> önceki örneklerimiz her zaman dönüş değerini 'den öğesine ApplyToIQueryable<T>türetir. Daha önce desteklediğimiz sorgu seçenekleri ($filter, $orderby, $skip, $top) sorgunun şeklini değiştirmediğinden bu daha önce çalışıyordu. Artık desteklediğimize $select ve 'den ApplyTo döndürülen değer her zaman olmayacaktır IQueryable<T>$expand.

    // Sample ODataQueryOptions<T> usage from earlier
    public IQueryable<Customer> Get(ODataQueryOptions<Customer> query)
    {
        IQueryable<customer> result="query.ApplyTo(_customers)" as iqueryable<customer>; return result;
    }
    

    Daha önceki örnek kodu kullanıyorsanız, istemci ve $expandgöndermezse $select çalışmaya devam eder. Ancak, desteklemek $select istiyorsanız ve $expand bu kodu bu kodla değiştirmeniz gerekiyorsa.

    public IHttpActionResult Get(ODataQueryOptions<Customer> query)
    {
        IQueryable result = query.ApplyTo(_customers);
        return Ok(result, result.GetType());
    }
     
    private IHttpActionResult Ok(object content, Type type)
    {
        Type resultType = typeof(OkNegotiatedContentResult<>).MakeGenericType(type);
        return Activator.CreateInstance(resultType, content, this) as IHttpActionResult;
    }
    
  2. Toplu istek sırasında Request.Url veya RequestContext.Url null

    Toplu işlem senaryosunda, Request.Url veya RequestContext.Url'den erişildiğinde UrlHelper null olur.

    Bu sorunun geçici çözümü, aşağıdaki örnekte olduğu gibi yeni bir UrlHelper örneği oluşturmaktır:

    UrlHelper'ın yeni bir örneğini oluşturma

    if (RequestContext.Url == null)
    {
        RequestContext.Url = new UrlHelper(Request);
    }
    

ASP.NET MVC

  1. MVC5 ve OrgAuth kullanırken AntiForgerToken doğrulaması yapan görünümleriniz varsa, görünüme veri gönderdiğinizde aşağıdaki hatayla karşılaşabilirsiniz:

    Hata:

    '/' Uygulamasında Sunucu Hatası.

    Belirtilen ClaimsIdentity türünde bir talep http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier veya https://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider mevcut değil. Talep tabanlı kimlik doğrulamasıyla sahte belirteç desteğini etkinleştirmek için, yapılandırılan talep sağlayıcısının oluşturduğu ClaimsIdentity örneklerinde bu taleplerin ikisini de sağladığını doğrulayın. Yapılandırılan talep sağlayıcısı bunun yerine benzersiz tanımlayıcı olarak farklı bir talep türü kullanıyorsa, AntiForgeryConfig.UniqueClaimTypeIdentifier statik özelliği ayarlanarak yapılandırılabilir.

    Geçici çözüm:

    Düzeltmek için Global.asax'a aşağıdaki satırı ekleyin:

    AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Name;

    Bu, sonraki sürüm için düzeltilecektir.

  2. MVC4 uygulamasını MVC5'e yükselttikten sonra çözümü derleyin ve başlatın. Aşağıdaki hatayı görmeniz gerekir:

    [A] System.Web.WebPages.Razor.Configuration.HostSection [B]System.Web.WebPages.Razor.Configuration.HostSection'a yayınlanamaz. A türü, 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll' konumundaki 'Default' bağlamındaki 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' türünden kaynaklanır. B türü, 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\6d05bbd0\e8b5908e\assembly\dl3\c9cbca63\f8910382_6273ce01\System.Web.WebPages.Razor.dll' konumundaki 'Default' bağlamındaki 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' türünden kaynaklanır.

    Yukarıdaki hatayı düzeltmek için projenizdeki tüm Web.config dosyalarını (Görünümler klasöründekiler dahil) açın ve aşağıdakileri yapın:

    1. "System.Web.Mvc" sürümünün "4.0.0.0" sürümünün tüm oluşumlarını "5.0.0.0" olarak güncelleştirin.

    2. "System.Web.Helpers", "System.Web.WebPages" ve "System.Web.WebPages.Razor" sürümlerinin "2.0.0.0" sürümünün tüm oluşumlarını "3.0.0.0" olarak güncelleştirin

      Örneğin, yukarıdaki değişiklikleri yaptıktan sonra derleme bağlamaları aşağıdaki gibi görünmelidir:

      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
      

      MVC 4 projelerini MVC 5'e yükseltme hakkında bilgi için bkz. ASP.NET MVC 4 ve Web API Projesini MVC 5 ve Web API 2'ye ASP.NET yükseltme.

  3. jQuery Engelleyici Olmayan Doğrulama ile istemci tarafı doğrulama kullanılırken, type='number' içeren bir HTML giriş öğesi için doğrulama iletisi bazen yanlıştır. Geçerli bir sayının gerekli olduğunu belirten doğru ileti yerine geçersiz bir sayı girildiğinde, gerekli değerin doğrulama hatası ("Yaş alanı gereklidir") gösterilir.

    Bu sorun genellikle Oluşturma ve Düzenleme görünümlerinde tamsayı özelliğine sahip bir modelin yapı iskelesi oluşturulmuş kodunda bulunur.

    Bu sorunu geçici olarak çözmek için düzenleyici yardımcısını şu şekilde değiştirin:

    @Html.EditorFor(person => person.Age)

    Hedef:

    @Html.TextBoxFor(person => person.Age)

  4. ASP.NET MVC 5 artık kısmi güveni desteklemez. MVC veya WebAPI ikili dosyalarına bağlanan projeler SecurityTransparent özniteliğini ve AllowPartiallyTrustedCallers özniteliğini kaldırmalıdır. Bu özniteliklerin kaldırılması, aşağıdaki gibi derleyici hatalarını ortadan kaldırır.

    Attempt by security transparent method ‘MyComponent' to access security critical type 'System.Web.Mvc.MvcHtmlString' failed. Assembly 'PagedList.Mvc, Version=4.3.0.0, Culture=neutral, PublicKeyToken=abbb863e9397c5e1' is marked with the AllowPartiallyTrustedCallersAttribute, and uses the level 2 security transparency model. Level 2 transparency causes all methods in AllowPartiallyTrustedCallers assemblies to become security transparent by default, which may be the cause of this exception.

    Bunun yan etkisi olarak, aynı uygulamada 4.0 ve 5.0 derlemelerini kullanamayacağınızı unutmayın. Bunların tümünü 5.0'a güncelleştirmeniz gerekir.

Web sitesi intranet bölgesinde barındırılırken Facebook yetkilendirmeli SPA Şablonu IE'de istikrarsızlıklara neden olabilir

SPA şablonu, Facebook ile harici oturum açma sağlar. Şablonla oluşturulan proje yerel olarak çalışırken, oturum açmak IE'nin kilitlenmesine neden olabilir.

Çözüm:

  1. Web sitesini internet bölgesinde barındırın; Veya

  2. Senaryoyu IE dışında bir tarayıcıda test edin.

Web Forms yapı iskelesi

Web Forms yapı iskelesi VS2013'ten kaldırılmıştır ve Visual Studio'nun gelecekteki bir güncelleştirmesinde kullanıma sunulacaktır. Ancak, MVC bağımlılıkları ekleyerek ve MVC için iskele oluşturarak Web Forms proje içinde iskele oluşturmayı kullanmaya devam edebilirsiniz. Projeniz Web Forms ve MVC'nin bir birleşimini içerir.

MVC'yi Web Forms projenize eklemek için yeni bir yapı iskelesi öğesi ekleyin ve MVC 5 Bağımlılıklar'ı seçin. Betikler gibi tüm içerik dosyalarına ihtiyacınız olup olmadığına bağlı olarak En Az veya Tam'ı seçin. Ardından, MVC için projenizde görünümler ve denetleyici oluşturacak bir yapı iskelesi öğesi ekleyin.

MVC ve Web API İskelesi - HTTP 404, Bulunamadı hatası

Bir projeye iskelesi oluşturulmuş öğe eklenirken hatayla karşılaşılırsa, projeniz tutarsız bir durumda bırakılabilir. Yapı iskelesi olarak yapılan bazı değişiklikler geri alınır, ancak yüklenen NuGet paketleri gibi diğer değişiklikler geri alınmaz. Yönlendirme yapılandırması değişiklikleri geri alınırsa, kullanıcılar iskelesi oluşturulmuş öğelere gittiği sırada http 404 hatası alır.

Geçici çözüm:

  • MVC'de bu hatayı düzeltmek için yeni bir yapı iskelesi öğesi ekleyin ve MVC 5 Bağımlılıkları (En Az veya Tam) seçeneğini belirleyin. Bu işlem, projenize tüm gerekli değişiklikleri ekler.

  • Web API'sinde bu hatayı düzeltmek için:

    1. WebApiConfig sınıfını projenize ekleyin.

      public static class WebApiConfig
      {
          public static void Register(HttpConfiguration config)
          {
              config.MapHttpAttributeRoutes();
              config.Routes.MapHttpRoute(
                  name: "DefaultApi",
                  routeTemplate: "api/{controller}/{id}",
                  defaults: new { id = RouteParameter.Optional }
              );
          }
      }
      
      Public Module WebApiConfig
          Public Sub Register(ByVal config As HttpConfiguration)
              config.MapHttpAttributeRoutes()
              config.Routes.MapHttpRoute(
                name:="DefaultApi",
                routeTemplate:="api/{controller}/{id}",
                defaults:=New With {.id = RouteParameter.Optional}
              )
          End Sub
      End Module
      
    2. Global.asax dosyasındaki Application_Start yönteminde WebApiConfig.Register dosyasını aşağıdaki gibi yapılandırın:

      public class WebApiApplication : System.Web.HttpApplication
      {
          protected void Application_Start()
          {
              GlobalConfiguration.Configure(WebApiConfig.Register);    
          }
      }
      
      Public Class WebApiApplication
           Inherits System.Web.HttpApplication
       
           Sub Application_Start()     
             GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)       
           End Sub
      End Class