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
- Bir ASP.NET
- Yeni Web Projesi Deneyimi
- ASP.NET yapı iskelesi
- Tarayıcı Bağlantısı
- Visual Studio Web Düzenleyicisi Geliştirmeleri
- Visual Studio'da Azure App Service Web Apps Desteği
- Web Yayımlama Geliştirmeleri
- NuGet 2.7
- ASP.NET Web Forms
- ASP.NET MVC 5
- ASP.NET Web API 2
- ASP.NET SignalR
- ASP.NET Kimlik
- Microsoft OWIN Bileşenleri
- Entity Framework 6
- ASP.NET Razor 3
- ASP.NET Uygulama Askıya Alma
- Bilinen Sorunlar ve Hataya Neden Olan Değişiklikler
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 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)
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ış.
Tarayıcı Bağlantısı – Tarayıcı ile Visual Studio arasında SignalR kanalı
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.
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.
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:
- Azure App Service'da ASP.NET web uygulaması oluşturma
- Visual Studio kullanarak Azure App Service'da web uygulaması sorunlarını giderme
Web Yayımlama Geliştirmeleri
Visual Studio 2013 yeni ve gelişmiş Web Yayımlama özellikleri içerir. Bunlardan birkaçı şunlardır:
- Web.config dosya şifrelemeyi kolayca otomatikleştirin. (Bu bağlantı ve MSDN belgelerine ilişkin aşağıdaki iki nokta, 17/10'da günün geç saatlerine kadar kullanılamayabilir.)
- Dağıtım sırasında uygulamayı çevrimdışına almayı kolayca otomatikleştirin.
- Hangi dosyaların sunucuya kopyalanması gerektiğini belirlemek için son değiştirme tarihi yerine dosya sağlama toplamı kullanmak üzere Web Dağıtımı'nı yapılandırın.
- FTP veya dosya sistemi yayımlama yöntemlerini ve Web Dağıtımı'nı kullanırken seçili dosyaları (Web.config dahil) hızla yayımlayın.
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.
- OWIN üzerine kurulmuştur
- MapHub'lar ve MapConnection artık MapSignalR
- Etki Alanları Arası Destek
- MonoTouch ve MonoDroid aracılığıyla iOS ve Android desteği
- Taşınabilir .NET İstemcisi
- Yeni Self-Host Paketi
- Geriye dönük uyumlu sunucu desteği
- .NET 4.0 için sunucu desteği kaldırıldı
- İstemciler ve gruplar listesine ileti gönderme
- Belirli bir kullanıcıya ileti gönderme
- Daha iyi hata işleme desteği
- Hub'ların daha kolay birim testi
- JavaScript hata işleme
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:
- Projeye sağ tıklayın
- Ekle, Yeni Öğe... öğesini seçin.
- 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 HubConfiguration
true
aş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 MapSignalR
kullanır RunSignalR
Map
, böylece CORS ara yazılımı yalnızca CORS desteği gerektiren SignalR istekleri için çalışır (içinde belirtilen MapSignalR
yoldaki 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
ODataQueryOptions<T>.ApplyTo(IQueryable)
ve$expand
iç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 öğesineApplyTo
IQueryable<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 'denApplyTo
döndürülen değer her zaman olmayacaktırIQueryable<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
$expand
gö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; }
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
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
veyahttps://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.
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:
"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.
"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.
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)
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:
Web sitesini internet bölgesinde barındırın; Veya
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:
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
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