Aracılığıyla paylaş


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 ve Web Araçları'nın sürümü açıklanmaktadır.

İçindekiler

Visual Studio 2013 için ASP.NET ve Web Araçlarındaki Yeni Özellikler

Yükleme Notları

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

Belgeler

Visual Studio 2013 için ASP.NET ve Web Araçları hakkındaki öğreticiler ve diğer bilgiler ASP.NET web sitesinden edinilebilir.

Yazılım Gereksinimleri

ASP.NET ve Web Araçları için Visual Studio 2013 gerekir.

Visual Studio 2013 için ASP.NET ve Web Araçlarındaki Yeni Özellikler

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

Bir ASP.NET

Visual Studio 2013'ün yayımlanmasıyla birlikte, 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 projesindeki Web API'lerini iskeleleyebilirsiniz. Bir ASP.NET, bir geliştirici olarak sevdiğiniz şeyleri ASP.NET yapmanızı kolaylaştırmaktır. Hangi teknolojiyi seçerseniz seçin, One ASP.NET'in güvenilir temel alınan çerçevesi üzerinde oluşturduğunuza güvenebilirsiniz.

Yeni Web Projesi Deneyimi

Visual Studio 2013'te yeni web projeleri oluşturma deneyimini geliştirdik. Yeni ASP.NET Web Projesi iletişim kutusunda istediğiniz proje türünü seçebilir, teknolojilerin herhangi bir bileşimini yapılandırabilir (Web Forms, MVC, Web API), 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ı (üyelik veya sosyal sağlayıcı oturum açma ASP.NET)
  • Kuruluş Hesapları (İnternet uygulamasında Active Directory)
  • Windows Kimlik Doğrulaması (intranet uygulamasında Active Directory)

Kimlik doğrulaması seçenekleri

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 da 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ı desteklememektedir, ancak projeye MVC bağımlılıkları ekleyerek Web Forms ile yapı iskelesi oluşturmayı kullanmaya devam edebilirsiniz. Web Forms için sayfa oluşturma desteği gelecekteki bir güncelleştirmede eklenecektir.

yapı iskelesi kullanırken, tüm gerekli bağımlılıkların projeye yüklendiğinden emin olacağız. Örneğin, bir ASP.NET Web Forms projesiyle başlar ve sonra 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 kutusu 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 NuGet paketleri ve ASP.NET MVC başvuruları eklenir. Tam seçeneğini belirlerseniz, MVC projesi için gerekli içerik dosyalarının yanı sıra En düşük 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 İskeleye 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. Mobil öykünücüler de dahil olmak üzere geliştirme sitenize birden çok tarayıcı bağlayabilir ve tüm tarayıcıları aynı anda yenilemek için Yenile'ye tıklayabilirsiniz. Tarayıcı Bağlantısı, geliştiricilerin Tarayıcı Bağlantısı uzantılarını yazmasına olanak tanımak için bir API de kullanıma sunar.

Açılan menüde Yenile simgesinin ve Tarayıcı Bağlantısı Panosu'nun vurgulandığı Visual Studio menüsünün ekran görüntüsü.

Geliştiricilerin Tarayıcı Bağlantısı API'sinin avantajlarından yararlanmasına olanak tanıyarak Visual Studio ile bağlı herhangi bir tarayıcı 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'i temel alan 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 ayrıca hem CoffeeScript hem de LESS düzenleyicileriyle birlikte 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 Uygulaması Service Web Apps Desteği

.NET 2.2 için Azure SDK ile Visual Studio 2013'te, 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 süre sonra Azure'da uzaktan hata ayıklama modunda çalışabileceksiniz. Azure Uygulaması Service Web Apps'e yönelik 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 edinmek 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ü, NuGet'in paket geri yükleme özelliğinin paketleri indirmesi 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. Şimdi paket geri yükleme 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.

ASP.NET Kimlik

Web Forms proje şablonları yeni ASP.NET Kimlik çerçevesini destekler. Ayrıca, şablonlar artık bir Web Forms intranet projesi oluşturmayı destekliyor.

Bootstrap

Web Forms şablonları kolayca özelleştirebileceğiniz şık ve duyarlı bir görünüm ve his sağlamak için Bootstrap'ı kullanır.

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ğinde 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 ile kimlik doğrulaması ve SQL DB ile ASP.NET MVC uygulaması oluşturma ve Azure Uygulaması Hizmeti'ne dağıtma sayfasında bulunabilir.

Bootstrap

MVC proje şablonu, kolayca özelleştirebileceğiniz şık ve duyarlı bir görünüm ve his sağlamak için Bootstrap'ı kullanacak şekilde güncelleştirildi.

Kimlik doğrulama filtreleri

Kimlik doğrulama filtreleri, ASP.NET MVC'de ASP.NET MVC işlem hattındaki 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, yazarı Tim McCall'ın katkıları sayesinde öznitelik yönlendirmeyi http://attributerouting.netdestekliyor. Öznitelik yönlendirme ile, eylemlerinize ve denetleyicilerinize ek 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 kaynak hiyerarşisini kolayca 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 ayrıca isteğe bağlı parametreleri, varsayılan değerleri ve yol kısıtlamalarını belirtmek için kullanışlı bir söz dizimi 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 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 Azure Active Directory veya Windows Server 2012 R2'de ADFS gibi bir kuruluş yetkilendirme sunucusu kullanılarak yetkilendirilebilir.

OData Geliştirmeleri

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

ASP.NET Web API 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 girdisi 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ımlamanıza gerek kalmadan OData hizmetleri oluşturabilirsiniz. Bunun yerine, OData denetleyicileriniz OData biçimlendiricileri serileştirme/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'in sizin için derlediğini EDM'yi kullanabilirsiniz.

İstek Toplu İşlemi

İstek toplu işlemi birden çok işlemi tek bir HTTP POST isteğinde bir araya getirerek ağ trafiğini azaltır ve daha sorunsuz, daha az gevelenek bir kullanıcı arabirimi sağlar. ASP.NET Web API'sinde artık istek toplu işlemi için çeşitli stratejiler destekleniyor:

  • 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ş 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ütme işlemlerinin sırayla mı yoksa herhangi bir sırada mı gerçekleştirilip yürütülmeyeceğini de 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'sinin eylem yöntemlerinin sonucunu kapsüllemek için IHttpActionResult uygulayabilirsiniz. Bir Web API eylem yönteminden döndürülen bir IHttpActionResult, ASP.NET Web API çalışma zamanı tarafından yürütülerek sonuç yanıt iletisini oluşturur. Web API uygulamanızın birim testini basitleştirmek için herhangi bir Web API'sinden IHttpActionResult döndürülebilir. Kolaylık sağlamak için belirli durum kodları, biçimlendirilmiş içerik veya içerikte anlaşmaya varılmış yanıtlar döndürmeye yönelik sonuçlar da 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 yerine istekle birlikte akıtıldığından, sorumlu artık Web API 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 isteklerin 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ındaki 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 ardından bazılarını belirli eylemlerden veya denetleyicilerden hariç tutmanızı sağlar.

OWIN Tümleştirmesi

ASP.NET Web API'si artık OWIN'i tamamen destekler 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 Kendi Kendine Barındırmak için OWIN kullanma ASP.NET.

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, SignalR için kurulum işlemini web'de barındırılan ve şirket içinde barındırılan SignalR uygulamaları arasında ç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 MapSignalRyeniden adlandırıldı. 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, tür parametresi olarak bağlantı türünü ve ilk bağımsız değişken olarak bağlantının URL uzantısını 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'yi seçin...
  3. Owin Başlangıç sınıfı'ni seçin. Yeni sınıf Startup.cs adlandırın.

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ündeki bir giriş kullanılarak Owin'in başlangıç işlemine eklenir.

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

SignalR 1.x'te 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'da 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 Başlangıç 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ı tarafından desteklendiği algılanırsa JavaScript istemcileri CORS'yi normal şekilde kullanmaya devam eder) ve bu senaryoları desteklemek için yeni OWIN ara yazılımı kullanıma sunulmuştur.

SignalR 2.0'da, istemcide JSONP gerekiyorsa (eski tarayıcılarda etki alanları arası istekleri desteklemek için), nesnesinde EnableJSONPHubConfigurationolarak ayarlanarak true açıkça etkinleştirilmesi gerekir. Aşağıda gösterildiği gibi. 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 arayın UseCors .

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, SignalR 2.0 projesinde CORS veya JSONP'nin nasıl etkinleştirileceği gösterilmektedir. Bu kod örneği ve Map yerine RunSignalRkullanırMapSignalR, 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

Önemli

Xamarin.Android, Xamarin.iOS, Xamarin.Mac artık android için .NET, iOS için .NET ve macOS için .NET olarak doğrudan .NET ile tümleştirilmiş (.NET 6'dan başlayarak). Eğer bugün bu proje türleriyle çalışıyorsanız, tam destek için projelerinizin .NET SDK stili projelere güncellenmesi gerekir. Xamarin projelerini .NET'e yükseltme hakkında daha fazla bilgi için Xamarin'den .NET'e yükseltme & .NET MAUI belgelerine bakın.

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 Kendi Kendine Konak Paketi

Artık SignalR Kendi Kendine Ana Bilgisayarı (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 vardır. SignalR 1.x ile oluşturulan kendi kendine bir projeyi 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 Kendi Kendine Ana Bilgisayarı.

Geriye dönük uyumlu sunucu desteği

SignalR'nin önceki sürümlerinde, istemcide kullanılan SignalR paketinin sürümleri ve 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 istemcilerle 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ında kullanılmalıdır. SignalR 2.0 için hala bir .NET 4.0 istemcisi var.

İ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 istemci ve grup 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 istemci ve grup 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, yeni bir API aracılığıyla bu kullanıcılara 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 istemciye gönderir ve burada hub yöntemi çağrısını reddetmek/başarısız olmak için kullanılır.

Ayrıntılı hub özel durumlarını göster ayarının istemciye geri gönderilen veya gönderilmeyen HubException ile hiçbir ilgisi 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 bir 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 xUnit.net ve moq ile bu arabirimin kullanılmasını gösterir.

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 bilgiler akmasına olanak tanır. 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'te ASP.NET Web Projeleri Oluşturma'daki Bireysel Kullanıcı Hesapları.

Talep tabanlı kimlik doğrulaması

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 kimlik doğrulaması, 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) 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'te ASP.NET Web Projeleri Oluşturma bölümünde Kuruluş 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, 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 onları 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ına olanak tanır. 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 kullanıcı dostu bir soyutlama kümesi sağlar. Bu paket, daha önceki birkaç paketi (örneğin, Owin.Extensions, Owin.Types) diğer OWIN bileşenleri tarafından kolayca kullanılabilen, iyi yapılandırılmış tek bir nesne modeli olarak 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ılmıştı 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çlerinin 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şlemeye yönelik ara yazılımı içeren paketi de içerir Microsoft.Owin.Cors .

Not

Visual Studio 2013'ün 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.
  • Güvenlik saydam özniteliği kaldırılsın.

    Not

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

=======

uygulama askıya alma ASP.NET

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 kökten değiştiren, oyun değiştiren bir özelliktir. Daha fazla bilgi için bkz . Uygulama Askıya Alma – duyarlı paylaşılan .NET web barındırma ASP.NET.

Bilinen Sorunlar ve Yeni Değişiklikler

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

NuGet

  • Yeni paket geri yükleme, SLN dosyası kullanılırken Mono üzerinde çalışmaz; yaklaşan bir nuget.exe indirme ve NuGet.CommandLine paket güncelleştirmesinde düzeltilecektir.
  • Yeni paket geri yükleme, Wix projeleriyle çalışmaz; yaklaşan bir nuget.exe indirme ve NuGet.CommandLine paket güncelleştirmesinde düzeltilecektir.

ASP.NET Web API

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

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

    // 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 $selectgöndermezse $expand ç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 değeridir.

    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ı.

    Sağlanan ClaimsIdentity'de veya http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier türünde https://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider bir talep yoktu. 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 içine 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. Tür A kaynağı: 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' bağlamında 'Default' konumunda 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. B türü 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, '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 PublicKeyToken=31bf3856ad364e35.

    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ı şöyle 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, Oluşturma ve Düzenleme görünümlerinde tamsayı özelliğine sahip bir model için yapı iskelesi oluşturulmuş kodda yaygın olarak 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. Tümünü 5.0 olarak 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 dış 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 İskelesi

Web Forms İskelesi VS2013'ten kaldırılmıştır ve Visual Studio'ya gelecek bir güncelleştirmede kullanıma sunulacaktır. Ancak, MVC bağımlılıkları ekleyerek ve MVC için iskele oluşturarak bir Web Forms projesinde yapı iskelesi kullanmaya devam edebilirsiniz. Projeniz Web Forms ve MVC'nin bir birleşimini içerir.

Web Forms projenize MVC eklemek için yeni bir yapı iskelesi öğesi ekleyin ve MVC 5 Bağımlılıkları'na tıklayın. 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üklü 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 yapı iskelesi oluşturulmuş öğelere gezinirken 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) öğesini seçin. 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'ı 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