Visual Studio 2013 の ASP.NET と Web ツールのリリース ノートASP.NET and Web Tools for Visual Studio 2013 Release Notes

Microsoftby Microsoft

このドキュメントでは、Visual Studio 2013 の ASP.NET and Web Tools のリリースについて説明します。This document describes the release of ASP.NET and Web Tools for Visual Studio 2013.

目次Contents

Visual Studio 2013 の ASP.NET and Web Tools の新機能New Features in ASP.NET and Web Tools for Visual Studio 2013

インストールに関する注意事項Installation Notes

Visual Studio 2013 の ASP.NET and Web Tools はメインインストーラーにバンドルされており、ここでダウンロードできます。ASP.NET and Web Tools for Visual Studio 2013 are bundled in the main installer and can be downloaded here.

DocumentationDocumentation

ASP.NET の Web サイトから、Visual Studio 2013 の ASP.NET and Web Tools に関するチュートリアルやその他の情報を入手できます。Tutorials and other information about ASP.NET and Web Tools for Visual Studio 2013 are available from the ASP.NET web site.

ソフトウェア要件Software Requirements

ASP.NET and Web Tools には Visual Studio 2013 が必要です。ASP.NET and Web Tools requires Visual Studio 2013.

Visual Studio 2013 の ASP.NET and Web Tools の新機能New Features in ASP.NET and Web Tools for Visual Studio 2013

以下のセクションでは、リリースで導入された機能について説明します。The following sections describe the features that have been introduced in the release.

1つの ASP.NETOne ASP.NET

Visual Studio 2013 のリリースでは、ASP.NET テクノロジの使用経験を統合するための手順を実行しました。これによって、必要なものを簡単に組み合わせることができます。With the release of Visual Studio 2013, we have taken a step towards unifying the experience of using ASP.NET technologies, so that you can easily mix and match the ones you want. たとえば、MVC を使用してプロジェクトを開始し、後で web フォームページをプロジェクトに簡単に追加したり、web フォームプロジェクトのスキャフォールディング Web Api を追加したりすることができます。For example, you can start a project using MVC and easily add Web Forms pages to the project later, or scaffold Web APIs in a Web Forms project. ASP.NET の1つは、ASP.NET で気に入っていることを開発者が簡単に実行できるようにすることです。One ASP.NET is all about making it easier for you as a developer to do the things you love in ASP.NET. どのテクノロジを選択した場合でも、1つの ASP.NET の信頼された基盤となるフレームワークを使用して、自信を持って構築できます。No matter what technology you choose, you can have confidence that you are building on the trusted underlying framework of One ASP.NET.

新しい Web プロジェクトのエクスペリエンスNew Web Project Experience

Visual Studio 2013 で新しい web プロジェクトを作成するためのエクスペリエンスが向上しました。We have enhanced the experience of creating new web projects in Visual Studio 2013. [New ASP.NET Web プロジェクト] ダイアログでは、必要なプロジェクトの種類を選択したり、テクノロジ (web フォーム、MVC、web API) の任意の組み合わせを構成したり、認証オプションを構成したり、単体テストプロジェクトを追加したりすることができます。In the New ASP.NET Web Project dialog you can select the project type you want, configure any combination of technologies (Web Forms, MVC, Web API), configure authentication options, and add a unit test project.

新しい ASP.NET プロジェクト

新しいダイアログボックスでは、多くのテンプレートの既定の認証オプションを変更できます。The new dialog enables you to change the default authentication options for many of the templates. たとえば、ASP.NET Web フォームプロジェクトを作成するときに、次のいずれかのオプションを選択できます。For example, when you create an ASP.NET Web Forms project you can select any of the following options:

  • 認証なしNo Authentication
  • 個々のユーザーアカウント (ASP.NET メンバーシップまたはソーシャルプロバイダーのログイン)Individual User Accounts (ASP.NET membership or social provider log in)
  • 組織アカウント (インターネットアプリケーションの Active Directory)Organizational Accounts (Active Directory in an internet application)
  • Windows 認証 (イントラネットアプリケーションでの Active Directory)Windows Authentication (Active Directory in an intranet application)

認証オプション

Web プロジェクトを作成するための新しいプロセスの詳細については、「 Visual Studio 2013 での ASP.NET Web プロジェクトの作成」を参照してください。For more information about the new process for creating web projects, see Creating ASP.NET Web Projects in Visual Studio 2013. 新しい認証オプションの詳細については、このドキュメントの後半の「 ASP.NET Identity 」を参照してください。For more information about the new authentication options, see ASP.NET Identity later in this document.

ASP.NET スキャフォールディングASP.NET Scaffolding

ASP.NET スキャフォールディングは、ASP.NET Web アプリケーションのコード生成フレームワークです。ASP.NET Scaffolding is a code generation framework for ASP.NET Web applications. これにより、データモデルと対話する定型コードをプロジェクトに簡単に追加できるようになります。It makes it easy to add boilerplate code to your project that interacts with a data model.

以前のバージョンの Visual Studio では、スキャフォールディングは ASP.NET MVC プロジェクトに限定されていました。In previous versions of Visual Studio, scaffolding was limited to ASP.NET MVC projects. Visual Studio 2013 では、Web フォームを含む任意の ASP.NET プロジェクトにスキャフォールディングを使用できるようになりました。With Visual Studio 2013, you can now use scaffolding for any ASP.NET project, including Web Forms. Visual Studio 2013 は、現在、Web フォームプロジェクトのページの生成をサポートしていませんが、MVC の依存関係をプロジェクトに追加することで、Web フォームでスキャフォールディングを使用できます。Visual Studio 2013 does not currently support generating pages for a Web Forms project, but you can still use scaffolding with Web Forms by adding MVC dependencies to the project. Web フォームのページ生成のサポートは、今後の更新プログラムで追加される予定です。Support for generating pages for Web Forms will be added in a future update.

スキャフォールディングを使用する場合は、必要なすべての依存関係がプロジェクトにインストールされていることを確認します。When using scaffolding, we ensure that all required dependencies are installed in the project. たとえば、ASP.NET の Web フォームプロジェクトから開始し、スキャフォールディングを使用して Web API コントローラーを追加すると、必要な NuGet パッケージと参照がプロジェクトに自動的に追加されます。For example, if you start with an ASP.NET Web Forms project and then use scaffolding to add a Web API Controller, the required NuGet packages and references are added to your project automatically.

MVC スキャフォールディングを Web フォームプロジェクトに追加するには、新しいスキャフォールディング項目を追加し、ダイアログウィンドウで [Mvc 5 の依存関係] を選択します。To add MVC scaffolding to a Web Forms project, add a New Scaffolded Item and select MVC 5 Dependencies in the dialog window. MVC のスキャフォールディングには、2つのオプションがあります。最小と完全。There are two options for scaffolding MVC; Minimal and Full. [最小] を選択すると、ASP.NET MVC の NuGet パッケージと参照のみがプロジェクトに追加されます。If you select Minimal, only the NuGet packages and references for ASP.NET MVC are added to your project. [完全] オプションを選択した場合は、最小の依存関係だけでなく、MVC プロジェクトに必要なコンテンツファイルが追加されます。If you select the Full option, the Minimal dependencies are added, as well as the required content files for an MVC project.

非同期コントローラーのスキャフォールディングのサポートには、Entity Framework 6 の新しい非同期機能が使用されます。Support for scaffolding async controllers uses the new async features from Entity Framework 6.

詳細とチュートリアルについては、「 ASP.NET スキャフォールディングの概要」を参照してください。For more information and tutorials, see ASP.NET Scaffolding Overview.

新しいブラウザーリンク機能を使用すると、複数のブラウザーを Visual Studio に接続し、ツールバーのボタンをクリックしてすべてを更新できます。The new Browser Link feature lets you connect multiple browsers to Visual Studio and refresh them all by clicking a button in the toolbar. モバイルエミュレーターを含む複数のブラウザーを開発サイトに接続し、[更新] をクリックすると、すべてのブラウザーを同時に更新できます。You can connect multiple browsers to your development site, including mobile emulators, and click refresh to refresh all the browsers all at the same time. ブラウザーリンクでは、開発者がブラウザーリンク拡張機能を作成できるようにする API も公開されています。Browser Link also exposes an API to enable developers to write Browser Link extensions.

開発者が Browser Link API を利用できるようにすることで、Visual Studio と接続されている任意のブラウザーの間の境界を越える非常に高度なシナリオを作成できるようになります。By enabling developers to take advantage of the Browser Link API, it becomes possible to create very advanced scenarios that crosses boundaries between Visual Studio and any browser that's connected. Web Essentials は API を利用して、Visual Studio とブラウザーの開発者ツールの間に統合されたエクスペリエンスを作成し、モバイルエミュレーターをリモートで制御します。Web Essentials takes advantage of the API to create an integrated experience between Visual Studio and the browser's developer tools, remote controlling mobile emulators and a lot more.

Visual Studio Web エディターの機能強化Visual Studio Web Editor Enhancements

Visual Studio 2013 には、Razor ファイル用の新しい HTML エディターと、web アプリケーションの HTML ファイルが含まれています。Visual Studio 2013 includes a new HTML editor for Razor files and HTML files in web applications. 新しい HTML エディターには、HTML5 に基づく単一の統合スキーマが用意されています。The new HTML editor provides a single unified schema based on HTML5. これには、かっこの自動補完、jQuery UI と AngularJS 属性の IntelliSense、属性の IntelliSense のグループ化、ID とクラス名の Intellisense、およびパフォーマンスの向上、書式設定、およびスマートタグの追加などの機能強化が含まれています。It has automatic brace completion, jQuery UI and AngularJS attribute IntelliSense, attribute IntelliSense Grouping, ID and class name Intellisense, and other improvements including better performance, formatting and SmartTags.

次のスクリーンショットは、HTML エディターでブートストラップ属性の IntelliSense を使用する方法を示しています。The following screenshot demonstrates using Bootstrap attribute IntelliSense in the HTML editor.

HTML エディターでの Intellisense

また Visual Studio 2013 には、CoffeeScript と LESS エディターの両方が組み込まれています。Visual Studio 2013 also comes with both CoffeeScript and LESS editors built in. LESS エディターには、CSS エディターのすべての優れた機能が用意されており、@import チェーン内のすべてのドキュメントにわたって、変数と mixin のための特定の Intellisense が用意されています。The LESS editor comes with all the cool features from the CSS editor and has specific Intellisense for variables and mixins across all the LESS documents in the @import chain.

Visual Studio での Azure App Service Web Apps のサポートAzure App Service Web Apps Support in Visual Studio

Azure SDK for .NET 2.2 の Visual Studio 2013 では、サーバーエクスプローラーを使用してリモート web アプリと直接やり取りできます。In Visual Studio 2013 with the Azure SDK for .NET 2.2, you can use Server Explorer to interact directly with your remote web apps. Azure アカウントにサインインしたり、新しい web アプリを作成したり、アプリを構成したり、リアルタイムログを表示したりできます。You can sign in to your Azure account, create new web apps, configure apps, view real-time logs, and more. SDK 2.2 がリリースされるとすぐに、Azure でリモートでデバッグモードで実行できるようになります。Coming soon after SDK 2.2 is released, you'll be able to run in debug mode remotely in Azure. Azure App Service Web Apps の新機能のほとんどは、Azure SDK for .NET の現在のリリースをインストールするときに Visual Studio 2012 でも動作します。Most of the new features for Azure App Service Web Apps also work in Visual Studio 2012 when you install the current release of the Azure SDK for .NET.

詳細については、次のリソースを参照してください。For more information, see the following resources:

Web 発行の機能強化Web Publish Enhancements

Visual Studio 2013 には、Web 公開の新機能と強化された機能が含まれています。Visual Studio 2013 includes new and enhanced Web Publish features. その一部を次に示します。Here are a few of them:

ASP.NET web デプロイの詳細については、 ASP.NET サイトを参照してください。For more information about ASP.NET web deployment, see the ASP.NET site.

NuGet 2.7NuGet 2.7

NuGet 2.7 には新機能の豊富なセットが含まれています。詳細については、「 nuget 2.7 のリリースノート」を参照してください。NuGet 2.7 includes a rich set of new features which are described in detail at NuGet 2.7 Release Notes.

このバージョンの NuGet では、パッケージをダウンロードするために NuGet のパッケージ復元機能に明示的に同意する必要もなくなります。This version of NuGet also removes the need to provide explicit consent for NuGet's package restore feature to download packages. NuGet をインストールすることにより、同意 (および NuGet の [基本設定] ダイアログの関連するチェックボックス) が許可されるようになりました。Consent (and the associated checkbox in NuGet's preferences dialog) is now granted by installing NuGet. 既定では、パッケージの復元が正常に機能するようになりました。Now package restore simply works by default.

ASP.NET Web フォームASP.NET Web Forms

1つの ASP.NETOne ASP.NET

Web フォームプロジェクトテンプレートは、新しい1つの ASP.NET エクスペリエンスとシームレスに統合されます。The Web Forms project templates integrate seamlessly with the new One ASP.NET experience. Web フォームプロジェクトに MVC と Web API のサポートを追加できます。また、ASP.NET プロジェクト作成ウィザードを使用して認証を構成することもできます。You can add MVC and Web API support to your Web Forms project, and you can configure authentication using the One ASP.NET project creation wizard. 詳細については、「 Visual Studio 2013 での ASP.NET Web プロジェクトの作成」を参照してください。For more information, see Creating ASP.NET Web Projects in Visual Studio 2013.

ASP.NET IdentityASP.NET Identity

Web フォームプロジェクトテンプレートでは、新しい ASP.NET Identity framework がサポートされています。The Web Forms project templates support the new ASP.NET Identity framework. さらに、テンプレートでは、Web フォームイントラネットプロジェクトの作成がサポートされるようになりました。In addition, the templates now support creation of a Web Forms intranet project. 詳細については、「 Visual Studio 2013 での ASP.NET Web プロジェクトの作成」の認証方法に関する説明を参照してください。For more information, see Authentication Methods in Creating ASP.NET Web Projects in Visual Studio 2013.

ブートストラップBootstrap

Web フォームテンプレートでは、ブートストラップを使用して、外観と応答性が向上し、簡単にカスタマイズできます。The Web Forms templates use Bootstrap to provide a sleek and responsive look and feel that you can easily customize. 詳細については、 Visual Studio 2013 web プロジェクトテンプレートの「ブートストラップ」を参照してください。For more information, see Bootstrap in the Visual Studio 2013 web project templates.

ASP.NET MVC 5ASP.NET MVC 5

1つの ASP.NETOne ASP.NET

Web MVC プロジェクトテンプレートは、新しい1つの ASP.NET エクスペリエンスとシームレスに統合されます。The Web MVC project templates integrate seamlessly with the new One ASP.NET experience. 1つの ASP.NET プロジェクト作成ウィザードを使用して、MVC プロジェクトをカスタマイズし、認証を構成することができます。You can customize your MVC project and configure authentication using the One ASP.NET project creation wizard. MVC 5 を ASP.NET する入門用のチュートリアルについては、「 ASP.NET mvc 5 を使用したはじめに」を参照してください。An introductory tutorial to ASP.NET MVC 5 can be found at Getting Started with ASP.NET MVC 5.

Mvc 4 プロジェクトを MVC 5 にアップグレードする方法については、「 ASP.NET mvc 4 と WEB Api プロジェクトを ASP.NET mvc 5 および WEB api 2 にアップグレードする方法」を参照してください。For information on upgrading MVC 4 projects to MVC 5, see How to Upgrade an ASP.NET MVC 4 and Web API Project to ASP.NET MVC 5 and Web API 2.

ASP.NET IdentityASP.NET Identity

MVC プロジェクトテンプレートは、認証と id 管理に ASP.NET Identity を使用するように更新されました。The MVC project templates have been updated to use ASP.NET Identity for authentication and identity management. Facebook と Google の認証および新しいメンバーシップ API を使用するチュートリアルについては、「 facebook と Google OAuth2 を使用した ASP.NET mvc 5 アプリの作成」と「認証と SQL DB を使用した ASP.NET mvc アプリの作成」と「Azure App Service へのデプロイ」を参照してください。A tutorial featuring Facebook and Google authentication and the new membership API can be found at Create an ASP.NET MVC 5 App with Facebook and Google OAuth2 and OpenID Sign-on and Create an ASP.NET MVC app with auth and SQL DB and deploy to Azure App Service.

ブートストラップBootstrap

MVC プロジェクトテンプレートは、ブートストラップを使用するように更新され、簡単にカスタマイズできる外観と応答性を備えています。The MVC project template has been updated to use Bootstrap to provide a sleek and responsive look and feel that you can easily customize. 詳細については、 Visual Studio 2013 web プロジェクトテンプレートの「ブートストラップ」を参照してください。For more information, see Bootstrap in the Visual Studio 2013 web project templates.

認証フィルターAuthentication filters

認証フィルターは、ASP.NET MVC の新しい種類のフィルターで、ASP.NET MVC パイプラインの承認フィルターの前に実行されます。また、アクションごと、コントローラー単位、またはすべてのコントローラーに対してグローバルに認証ロジックを指定できます。Authentication filters are a new kind of filter in ASP.NET MVC that run prior to authorization filters in the ASP.NET MVC pipeline and allow you to specify authentication logic per-action, per-controller, or globally for all controllers. 認証フィルターは、要求内の資格情報を処理し、対応するプリンシパルを指定します。Authentication filters process credentials in the request and provide a corresponding principal. 認証フィルターでは、承認されていない要求に応答して認証チャレンジを追加することもできます。Authentication filters can also add authentication challenges in response to unauthorized requests.

フィルターのオーバーライドFilter overrides

オーバーライドフィルターを指定することにより、特定のアクションメソッドまたはコントローラーに適用するフィルターを上書きできるようになりました。You can now override which filters apply to a given action method or controller by specifying an override filter. 上書きフィルターでは、特定のスコープ (action または controller) に対して実行しないフィルターの種類のセットを指定します。Override filters specify a set of filter types that should not be run for a given scope (action or controller). これにより、グローバルに適用されるフィルターを構成してから、特定のグローバルフィルターを特定のアクションまたはコントローラーに適用しないようにすることができます。This allows you to configure filters that apply globally but then exclude certain global filters from applying to specific actions or controllers.

属性ルーティングAttribute routing

ASP.NET MVC は、 http://attributerouting.netの作成者である Tim mccall による貢献のおかげで、属性ルーティングをサポートするようになりました。ASP.NET MVC now supports attribute routing, thanks to a contribution by Tim McCall, the author of http://attributerouting.net. 属性ルーティングを使用すると、アクションとコントローラーに注釈を付けることによって、ルートを指定できます。With attribute routing you can specify your routes by annotating your actions and controllers.

ASP.NET Web API 2ASP.NET Web API 2

属性ルーティングAttribute routing

ASP.NET Web API は、 http://attributerouting.netの作成者である Tim mccall による貢献のおかげで、属性ルーティングをサポートするようになりました。ASP.NET Web API now supports attribute routing, thanks to a contribution by Tim McCall, the author of http://attributerouting.net. 属性ルーティングでは、次のようにアクションとコントローラーに注釈を付けることで、Web API のルートを指定できます。With attribute routing you can specify your Web API routes by annotating your actions and controllers like this:

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

属性ルーティングを使用すると、web API の Uri をより詳細に制御できます。Attribute routing gives you more control over the URIs in your web API. たとえば、1つの API コントローラーを使用してリソース階層を簡単に定義できます。For example, you can easily define a resource hierarchy using a single API controller:

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) { } 
}

属性ルーティングでは、省略可能なパラメーター、既定値、およびルート制約を指定するための便利な構文も提供されます。Attribute routing also provides a convenient syntax for specifying optional parameters, default values, and route constraints:

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

属性ルーティングの詳細については、「 WEB API 2 での属性ルーティング」を参照してください。For more information about attribute routing, see Attribute Routing in Web API 2.

OAuth 2.0OAuth 2.0

Web API とシングルページアプリケーションプロジェクトテンプレートで、OAuth 2.0 を使用した承認がサポートされるようになりました。The Web API and Single Page Application project templates now support authorization using OAuth 2.0. OAuth 2.0 は、保護されたリソースへのクライアントアクセスを承認するためのフレームワークです。OAuth 2.0 is a framework for authorizing client access to protected resources. これは、ブラウザーやモバイルデバイスなど、さまざまなクライアントで機能します。It works for a variety of clients including browsers and mobile devices.

OAuth 2.0 のサポートは、ベアラー認証用の Microsoft OWIN コンポーネントによって提供される新しいセキュリティミドルウェアと、承認サーバーロールの実装に基づいています。Support for OAuth 2.0 is based on new security middleware provided by the Microsoft OWIN Components for bearer authentication and implementing the authorization server role. または、Windows Server 2012 R2 の Azure Active Directory や ADFS など、組織の承認サーバーを使用してクライアントを承認することもできます。Alternatively, clients can be authorized using an organizational authorization server, such as Azure Active Directory or ADFS in Windows Server 2012 R2.

OData の機能強化OData Improvements

$Select、$expand、$batch、および $value のサポートSupport for $select, $expand, $batch, and $value

ASP.NET Web API OData で $select、$expand、および $value が完全にサポートされるようになりました。ASP.NET Web API OData now has full support for $select, $expand, and $value. また、要求のバッチ処理と変更セットの処理に $batch を使用することもできます。You can also use $batch for request batching and processing of change sets.

$Select オプションと $expand オプションを使用すると、OData エンドポイントから返されるデータの構造を変更できます。The $select and $expand options let you change the shape of the data that is returned from an OData endpoint. 詳細については、「 WEB API OData での $select と $expand サポートの概要」を参照してください。For more information, see Introducing $select and $expand support in Web API OData.

拡張機能の向上Improved extensibility

OData フォーマッタを拡張できるようになりました。The OData formatters are now extensible. Atom エントリメタデータを追加したり、名前付きストリームとメディアリンクエントリをサポートしたり、インスタンス注釈を追加したり、リンクの生成方法をカスタマイズしたりすることができます。You can add Atom entry metadata, support named stream and media link entries, add instance annotations, and customize how links are generated.

種類-less サポートType-less support

エンティティ型に CLR 型を定義しなくても、OData サービスを構築できるようになりました。You can now build OData services without needing to define CLR types for your entity types. 代わりに、odata コントローラーは、OData フォーマッタのシリアル化/逆シリアル化であるIedmobjectインスタンスを取得または返すことができます。Instead, your OData controllers can take or return instances of IEdmObject, which are the OData formatters serialize/deserialize.

既存のモデルを再利用するReuse an existing model

既に既存の entity data model (EDM) を使用している場合は、新しい entity data model を作成するのではなく、直接再利用できるようになりました。If you already have an existing entity data model (EDM), you can now reuse it directly, instead of having to build a new one. たとえば、Entity Framework を使用している場合、EF がビルドする EDM を使用できます。For example, if you are using Entity Framework, you can use the EDM that EF builds for you.

バッチ処理の要求Request Batching

要求のバッチ処理では、複数の操作を1つの HTTP POST 要求に結合して、ネットワークトラフィックを減らし、よりスムーズで高いなユーザーインターフェイスを提供します。Request batching combines multiple operations into a single HTTP POST request, to reduce network traffic and provide a smoother, less chatty user interface. ASP.NET Web API は、要求バッチ処理のためのいくつかの方法をサポートするようになりました。ASP.NET Web API now supports several strategies for request batching:

  • OData サービスの $batch エンドポイントを使用します。Use the $batch endpoint of an OData service.
  • 複数の要求を1つの MIME マルチパート要求にパッケージ化します。Package multiple requests into a single MIME multipart request.
  • カスタムバッチ形式を使用します。Use a custom batching format.

要求のバッチ処理を有効にするには、バッチハンドラーを含むルートを Web API 構成に追加するだけです。To enable request batching, simply add a route with a batching handler to your Web API configuration:

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

また、要求または順番に実行するかどうかを制御することもできます。You can also control whether requests or executed sequentially or in any order.

ポータブル ASP.NET Web API クライアントPortable ASP.NET Web API Client

ASP.NET Web API クライアントを使用して、Windows ストアで動作するポータブルクラスライブラリを作成し、8つのアプリケーションを Windows Phone できるようになりました。You can now use the ASP.NET Web API Client to create portable class libraries that work across your Windows Store and Windows Phone 8 applications. また、クライアントとサーバー間で共有できるポータブルフォーマッタを作成することもできます。You can also create portable formatters that can be shared across client and server.

テストの容易性の向上Improved Testability

Web API 2 を使用すると、API コントローラーの単体テストがはるかに簡単になります。Web API 2 makes it much easier to unit test your API controllers. 要求メッセージと構成を使用して API コントローラーをインスタンス化し、テストするアクションメソッドを呼び出すだけです。Just instantiate your API controller with your request message and configuration, and then call the action method you wish to test. また、リンク生成を実行するアクションメソッドのUrlhelperクラスを簡単にモックできます。It is also easy to mock the UrlHelper class, for action methods that perform link generation.

IHttpActionResultIHttpActionResult

IHttpActionResult を実装して、Web API アクションメソッドの結果をカプセル化できるようになりました。You can now implement IHttpActionResult to encapsulate the result of your Web API action methods. Web API アクションメソッドから返された IHttpActionResult は、結果の応答メッセージを生成するために ASP.NET Web API ランタイムによって実行されます。An IHttpActionResult returned from a Web API action method is executed by the ASP.NET Web API runtime to produce the resultant response message. Web api の実装の単体テストを簡単にするために、任意の Web API アクションから IHttpActionResult を返すことができます。An IHttpActionResult can be returned from any Web API action to simplify unit testing of your Web API implementation. 便宜上、特定のステータスコード、書式設定されたコンテンツ、またはコンテンツをネゴシエートした応答を返す結果を含む、いくつかの IHttpActionResult 実装がすぐに用意されています。For convenience a number of IHttpActionResult implementations are provided out of the box including results for returning specific status codes, formatted content or content-negotiated responses.

HttpRequestContextHttpRequestContext

新しいHttprequestcontextは、要求に関連付けられているが、要求からすぐには利用できない状態を追跡します。The new HttpRequestContext tracks any state that is tied to the request but is not immediately available from the request. たとえば、 Httprequestcontextを使用して、ルートデータ、要求に関連付けられているプリンシパル、クライアント証明書、 urlhelper 、および仮想パスのルートを取得できます。For example, you can use the HttpRequestContext to get route data, the principal associated with the request, the client certificate, the UrlHelper and the virtual path root. 単体テストのために、 Httprequestcontextを簡単に作成できます。You can easily create an HttpRequestContext for unit testing purposes.

要求のプリンシパルは、 thread.currentprincipalに依存するのではなく、要求でフローされるので、Web API パイプライン内にある間、要求の有効期間中にプリンシパルを使用できるようになりました。Because the principal for the request is flowed with the request instead of relying on Thread.CurrentPrincipal, the principal is now available throughout the lifetime of the request while it is in the Web API pipeline.

CORSCORS

Brock Allen によるもう1つの優れた投稿により、ASP.NET はクロスオリジン要求共有 (CORS) を完全にサポートするようになりました。Thanks to another great contribution from Brock Allen, ASP.NET now fully supports Cross Origin Request Sharing (CORS).

ブラウザーのセキュリティでは、web ページが別のドメインに対して AJAX 要求を行うことを防止します。Browser security prevents a web page from making AJAX requests to another domain. CORSは、サーバーが同じオリジンポリシーを緩めることを可能にする W3C 標準です。CORS is a W3C standard that allows a server to relax the same-origin policy. CORS を使用すると、サーバーは、他のユーザーを拒否しながら、一部のクロスオリジン要求を明示的に許可できます。Using CORS, a server can explicitly allow some cross-origin requests while rejecting others.

Web API 2 では、プレフライト要求の自動処理を含む CORS がサポートされるようになりました。Web API 2 now supports CORS, including automatic handling of preflight requests. 詳細については、「 ASP.NET Web API でのクロスオリジン要求の有効化」を参照してください。For more information, see Enabling Cross-Origin Requests in ASP.NET Web API.

認証フィルターAuthentication Filters

認証フィルターは、ASP.NET Web API パイプラインの承認フィルターの前に実行される ASP.NET Web API の新しい種類のフィルターであり、アクションごと、コントローラー単位、またはすべてのコントローラーに対してグローバルに認証ロジックを指定できます。Authentication filters are a new kind of filter in ASP.NET Web API that run prior to authorization filters in the ASP.NET Web API pipeline and allow you to specify authentication logic per-action, per-controller, or globally for all controllers. 認証フィルターは、要求内の資格情報を処理し、対応するプリンシパルを指定します。Authentication filters process credentials in the request and provide a corresponding principal. 認証フィルターでは、承認されていない要求に応答して認証チャレンジを追加することもできます。Authentication filters can also add authentication challenges in response to unauthorized requests.

フィルターのオーバーライドFilter Overrides

オーバーライドフィルターを指定することにより、特定のアクションメソッドまたはコントローラーに適用するフィルターを上書きできるようになりました。You can now override which filters apply to a given action method or controller, by specifying an override filter. オーバーライドフィルターは、特定のスコープ (アクションまたはコントローラー) に対して実行してはならないフィルターの種類のセットを指定します。Override filters specify a set of filter types that should not run for a given scope (action or controller). これにより、グローバルフィルターを追加できますが、特定のアクションまたはコントローラーから除外することができます。This allows you to add global filters, but then exclude some from specific actions or controllers.

OWIN の統合OWIN Integration

ASP.NET Web API は OWIN を完全にサポートするようになり、任意の OWIN 対応ホストで実行できるようになりました。ASP.NET Web API now fully supports OWIN and can be run on any OWIN capable host. また、OWIN 認証システムとの統合を提供するHostauthenticationfilterも含まれています。Also included is a HostAuthenticationFilter that provides integration with the OWIN authentication system.

OWIN 統合では、SignalR などの他の OWIN ミドルウェアと共に、独自のプロセスで Web API を自己ホストできます。With OWIN integration, you can self-host Web API in your own process alongside other OWIN middleware, such as SignalR. 詳細については、「 USE OWIN To Self Host ASP.NET Web API」を参照してください。For more information, see Use OWIN to Self-Host ASP.NET Web API.

ASP.NET SignalR 2.0ASP.NET SignalR 2.0

以下のセクションでは、SignalR 2.0 の機能について説明します。The following sections describe features of SignalR 2.0.

既存の1.x プロジェクトを SignalR 2.0 にアップグレードする方法の例については、「 SignalR 1.X プロジェクトをアップグレードする」を参照してください。For an example of how to upgrade an existing 1.x project to SignalR 2.0, see Upgrading a SignalR 1.x Project.

OWIN 上に構築Built on OWIN

SignalR 2.0 は、OWIN (Open Web Interface for .net)で完全に構築されています。SignalR 2.0 is built completely on OWIN (the Open Web Interface for .NET). この変更により、web ホストアプリケーションと自己ホスト型 SignalR アプリケーションの間で SignalR のセットアッププロセスの一貫性が大幅に向上しますが、多くの API 変更も必要でした。This change makes the setup process for SignalR much more consistent between web-hosted and self-hosted SignalR applications, but has also required a number of API changes.

MapHubs と Maphubs が MapSignalR になりましたMapHubs and MapConnection are now MapSignalR

OWIN 標準との互換性のために、これらのメソッドの名前が MapSignalRに変更されました。For compatibility with OWIN standards, these methods have been renamed to MapSignalR. パラメーターを指定せずに MapSignalR 呼び出されると、すべてのハブがマップされます (バージョン1.x の MapHubs と同様)。個々のPersistentConnectionオブジェクトをマップするには、型パラメーターとして接続の種類を指定し、最初の引数として接続の URL 拡張子を指定します。MapSignalR called without parameters will map all hubs (as MapHubs does in version 1.x); to map individual PersistentConnection objects, specify the connection type as the type parameter, and the URL extension for the connection as the first argument.

MapSignalR メソッドは、Owin startup クラスで呼び出されます。The MapSignalR method is called in an Owin startup class. Visual Studio 2013 には、Owin startup クラス用の新しいテンプレートが含まれています。このテンプレートを使用するには、次の手順を実行します。Visual Studio 2013 contains a new template for an Owin startup class; to use this template, do the following:

  1. プロジェクトを右クリックします。Right-click on the project
  2. [追加][新しい項目] の選択...Select Add, New Item...
  3. [Owin Startup クラス] を選択します。Select Owin Startup class. 新しいクラスにStartup.csという名前を指定します。Name the new class Startup.cs.

Web アプリケーションでは、次に示すように、web.config ファイルの [アプリケーションの設定] ノードのエントリを使用して、MapSignalR メソッドを含む Owin startup クラスが Owin のスタートアッププロセスに追加されます。In a Web application, the Owin startup class containing the MapSignalR method is then added to Owin's startup process using an entry in the application settings node of the Web.Config file, as shown below.

自己ホスト型アプリケーションでは、Startup クラスは WebApp.Start メソッドの型パラメーターとして渡されます。In a Self-hosted application, the Startup class is passed as the type parameter of the WebApp.Start method.

SignalR 1.x でのハブと接続のマッピング (web アプリケーションのグローバルアプリケーションファイルから):Mapping hubs and connections in SignalR 1.x (from the global application file in a web application):

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 でのハブと接続のマッピング (Owin スタートアップクラスファイルから):Mapping hubs and connections in SignalR 2.0 (from an Owin Startup class file):

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");
        }
    }
}

自己ホスト型アプリケーションでは、次に示すように、Startup クラスが WebApp.Start メソッドの型パラメーターとして渡されます。In a Self-hosted application, the Startup class is passed as the type parameter for the WebApp.Start method, as shown below.

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

ドメイン間サポートCross-Domain Support

SignalR 1.x では、クロスドメイン要求は単一の EnableCrossDomain フラグによって制御されていました。In SignalR 1.x, cross domain requests were controlled by a single EnableCrossDomain flag. このフラグは、JSONP 要求と CORS 要求の両方を制御します。This flag controlled both JSONP and CORS requests. 柔軟性を高めるため、すべての CORS サポートは SignalR のサーバーコンポーネントから削除されています (ブラウザーがサポートしていることが検出された場合、JavaScript クライアントは引き続き CORS を使用します)。また、これらのシナリオをサポートするために新しい OWIN ミドルウェアを利用できるようになりました。For greater flexibility, all CORS support has been removed from the server component of SignalR (JavaScript clients still use CORS normally if it is detected that the browser supports it), and new OWIN middleware has been made available to support these scenarios.

SignalR 2.0 では、クライアントで JSONP が必要な場合 (古いブラウザーでクロスドメイン要求をサポートするため)、次に示すように、HubConfiguration オブジェクトの EnableJSONPtrueに設定することによって、明示的に有効にする必要があります。In SignalR 2.0, If JSONP is required on the client (to support cross-domain requests in older browsers), it will need to be enabled explicitly by setting EnableJSONP on the HubConfiguration object to true, as shown below. JSONP は、CORS よりも安全性が低いため、既定では無効になっています。JSONP is disabled by default, as it is less secure than CORS.

新しい CORS ミドルウェアを SignalR 2.0 に追加するには、次のセクションに示すように、Microsoft.Owin.Cors ライブラリをプロジェクトに追加し、SignalR ミドルウェアの前に UseCors を呼び出します。To add the new CORS middleware in SignalR 2.0, add the Microsoft.Owin.Cors library to your project, and call UseCors before your SignalR middleware, as shown in the section below.

プロジェクトへの Owin の追加: このライブラリをインストールするには、パッケージマネージャーコンソールで次のコマンドを実行します。Adding Microsoft.Owin.Cors to your project: To install this library, run the following command in the Package Manager Console:

Install-Package Microsoft.Owin.Cors

このコマンドにより、2.0.0 バージョンのパッケージがプロジェクトに追加されます。This command will add the 2.0.0 version of the package to your project.

UseCors の呼び出しCalling UseCors

次のコードスニペットは、SignalR 1.x と2.0 でドメイン間接続を実装する方法を示しています。The following code snippets demonstrate how to implement cross-domain connections in SignalR 1.x and 2.0.

SignalR 1.x でのクロスドメイン要求の実装 (グローバルアプリケーションファイルから)Implementing cross-domain requests in SignalR 1.x (from the global application file)

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

SignalR 2.0 でのクロスドメイン要求の実装 ( C#コードファイルから)Implementing cross-domain requests in SignalR 2.0 (from a C# code file)

次のコードは、SignalR 2.0 プロジェクトで CORS または JSONP を有効にする方法を示しています。The following code demonstrates how to enable CORS or JSONP in a SignalR 2.0 project. このコードサンプルでは、MapSignalRではなく MapRunSignalR を使用して、CORS ミドルウェアが、アプリケーション全体ではなく、特定の URL プレフィックスに対して実行する必要のある SignalR 要求に対してのみ実行されるようにします (MapSignalRで指定されたパスのすべてのトラフィックではありません Map)。This code sample uses Map and RunSignalR instead of MapSignalR, so that the CORS middleware runs only for the SignalR requests that require CORS support (rather than for all traffic at the path specified in MapSignalR.) Map can also be used for any other middleware that needs to run for a specific URL prefix, rather than for the entire application.

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.dialog とモノ Id を使用した iOS および Android のサポートiOS and Android support via MonoTouch and MonoDroid

Xamarin ライブラリの monotouch.dialog コンポーネントとモノ id コンポーネントを使用する IOS および Android クライアントのサポートが追加されました。Support has been added for iOS and Android clients using MonoTouch and MonoDroid components from the Xamarin library. 使用方法の詳細については、「 Xamarin コンポーネントの使用」を参照してください。For more information on how to use them, see Using Xamarin Components. これらのコンポーネントは、SignalR RTW リリースが利用可能になったときに、 Xamarin ストアで使用できるようになります。These components will be available in the Xamarin Store when the SignalR RTW release is available.

# # # ポータブル .NET クライアント### Portable .NET client

クロスプラットフォームの開発を容易にするために、Silverlight、WinRT、および Windows Phone クライアントは、次のプラットフォームをサポートする1つのポータブル .NET クライアントに置き換えられています。To better facilitate cross-platform development, the Silverlight, WinRT and Windows Phone clients have been replaced with a single portable .NET client that supports the following platforms:

  • NET 4.5NET 4.5
  • Silverlight 5Silverlight 5
  • WinRT (Windows ストアアプリ用 .NET)WinRT (.NET for Windows Store Apps)
  • Windows Phone 8Windows Phone 8

新しい自己ホストパッケージNew Self-Host Package

SignalR 自己ホスト (web サーバーでホストされるのではなく、プロセスまたは他のアプリケーションでホストされている SignalR アプリケーション) の使用を簡単に始めることができる NuGet パッケージが用意されています。There is now a NuGet package to make it easier to get started with SignalR Self-Host (SignalR applications that are hosted in a process or other application, rather than being hosted in a web server). SignalR 1.x でビルドされた自己ホストプロジェクトをアップグレードするには、SignalR パッケージを削除してから、SignalR パッケージを追加した後に追加します。To upgrade a self-host project built with SignalR 1.x, remove the Microsoft.AspNet.SignalR.Owin package, and add the Microsoft.AspNet.SignalR.SelfHost package. 自己ホストパッケージの概要については、「チュートリアル: SignalR 自己ホスト」を参照してください。For more information on getting started with the self-host package, see Tutorial: SignalR Self-Host.

下位互換性のあるサーバーのサポートBackward-compatible server support

以前のバージョンの SignalR では、クライアントとサーバーで使用されている SignalR パッケージのバージョンが同一である必要があります。In previous versions of SignalR, the versions of the SignalR package used in the client and the server needed to be identical. 更新が困難なシッククライアントアプリケーションをサポートするために、SignalR 2.0 では、古いクライアントでの新しいサーバーバージョンの使用がサポートされるようになりました。In order to support thick-client applications that would be difficult to update, SignalR 2.0 now supports using a newer server version with an older client. 注: SignalR 2.0 では、以前のバージョンでビルドされたサーバーを新しいクライアントでサポートしていません。Note: SignalR 2.0 does not support servers built with older versions with newer clients.

.NET 4.0 のサーバーサポートを削除しましたRemoved server support for .NET 4.0

SignalR 2.0 では、.NET 4.0 とのサーバー相互運用性のサポートが削除されました。SignalR 2.0 has dropped support for server interoperability with .NET 4.0. .NET 4.5 は、SignalR 2.0 サーバーで使用する必要があります。.NET 4.5 must be used with SignalR 2.0 servers. 引き続き、SignalR 2.0 用の .NET 4.0 クライアントがあります。There is still a .NET 4.0 client for SignalR 2.0.

クライアントとグループの一覧へのメッセージの送信Sending a message to a list of clients and groups

SignalR 2.0 では、クライアント Id とグループ Id の一覧を使用してメッセージを送信することができます。In SignalR 2.0, it's possible to send a message using a list of client and group IDs. 次のコードスニペットは、この方法を示しています。The following code snippets demonstrate how to do this.

PersistentConnection を使用して、クライアントとグループの一覧にメッセージを送信するSending a message to a list of clients and groups using PersistentConnection

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);
    }
}

ハブを使用して、クライアントとグループの一覧にメッセージを送信するSending a message to a list of clients and groups using Hubs

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();
    }
}

特定のユーザーへのメッセージの送信Sending a message to a specific user

この機能を使用すると、ユーザーは新しいインターフェイス IUserIdProvider を使用して、IRequest に基づいてユーザー Id を指定できます。This feature allows users to specify what the userId is based on an IRequest via a new interface IUserIdProvider:

IUserIdProvider インターフェイスThe IUserIdProvider interface

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

既定では、ユーザーの IPrincipal.Identity.Name をユーザー名として使用する実装が存在します。By default there will be an implementation that uses the user's IPrincipal.Identity.Name as the user name.

ハブでは、新しい API を使用して、これらのユーザーにメッセージを送信できます。In hubs, you'll be able to send messages to these users via a new API:

クライアント. User API の使用Using the Clients.User API

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

より優れたエラー処理のサポートBetter Error Handling Support

ユーザーは、任意のハブ呼び出しからHubExceptionをスローできるようになりました。Users can now throw HubException from any hub invocation. HubExceptionのコンストラクターは、文字列メッセージとオブジェクトの追加のエラーデータを受け取ることができます。The constructor of the HubException can take a string message and an object extra error data. SignalR は、例外を自動的にシリアル化し、それをクライアントに送信します。これは、ハブメソッドの呼び出しを拒否/失敗するために使用されます。SignalR will auto-serialize the exception and send it to the client where it will be used to reject/fail the hub method invocation.

[詳細なハブ例外を表示する] 設定は、クライアントに送信されるHubExceptionには影響しません。常に送信されます。The show detailed hub exceptions setting has no bearing on HubException being sent back to the client or not; it is always sent.

HubException をクライアントに送信する方法を示すサーバー側コードServer-side code demonstrating sending a HubException to the client

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);
    }
}

サーバーから送信された HubException への応答を示す JavaScript クライアントコードJavaScript client code demonstrating responding to a HubException sent from the server

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

サーバーから送信された HubException への応答を示す .NET クライアントコード.NET client code demonstrating responding to a HubException sent from the server

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

ハブの単体テストの簡素化Easier unit testing of hubs

SignalR 2.0 には、モッククライアント側の呼び出しの作成を容易にするハブで IHubCallerConnectionContext というインターフェイスが含まれています。SignalR 2.0 includes an interface called IHubCallerConnectionContext on Hubs that makes it easier to create mock client side invocations. 次のコードスニペットは、一般的なテストハーネスxUnit.netmoqでこのインターフェイスを使用する方法を示しています。The following code snippets demonstrate using this interface with popular test harnesses xUnit.net and moq.

XUnit.net を使用した SignalR の単体テストUnit testing SignalR with xUnit.net

[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 を使用した SignalR の単体テストUnit testing SignalR with moq

[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 のエラー処理JavaScript error handling

SignalR 2.0 では、すべての JavaScript エラー処理コールバックで、生の文字列ではなく JavaScript エラーオブジェクトが返されます。In SignalR 2.0, all JavaScript error handling callbacks return JavaScript error objects instead of raw strings. これにより、SignalR は、より豊富な情報をエラーハンドラーに渡すことができます。This allows SignalR to flow richer information to your error handlers. 内部例外は、エラーの source プロパティから取得できます。You can get the inner exception from the source property of the error.

Start. Fail 例外を処理する JavaScript クライアントコードJavaScript client code that handles the Start.Fail exception

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

ASP.NET IdentityASP.NET Identity

新しい ASP.NET メンバーシップシステムNew ASP.NET Membership System

ASP.NET Identity は、ASP.NET アプリケーションの新しいメンバーシップシステムです。ASP.NET Identity is the new membership system for ASP.NET applications. ASP.NET Identity を使用すると、ユーザー固有のプロファイルデータをアプリケーションデータに簡単に統合できます。ASP.NET Identity makes it easy to integrate user-specific profile data with application data. ASP.NET Identity では、アプリケーションでユーザープロファイルの永続性モデルを選択することもできます。ASP.NET Identity also allows you to choose the persistence model for user profiles in your application. データは SQL Server データベースまたは別のデータストア (Azure Storage テーブルなどの NoSQL データストア) に格納できます。You can store the data in a SQL Server database or another data store, including NoSQL data stores such as Azure Storage Tables. 詳細については、「 Visual Studio 2013 での ASP.NET Web プロジェクトの作成における個々のユーザーアカウント」を参照してください。For more information, see Individual User Accounts in Creating ASP.NET Web Projects in Visual Studio 2013.

クレーム ベースの認証Claims-based authentication

ASP.NET は、信頼性情報ベースの認証をサポートするようになりました。この認証では、ユーザーの id は信頼された発行者からのクレームのセットとして表されます。ASP.NET now supports claims-based authentication, where the user's identity is represented as a set of claims from a trusted issuer. ユーザーは、アプリケーションデータベースで保持されているユーザー名とパスワードを使用して、またはソーシャル id プロバイダー (Microsoft アカウント、Facebook、Google、Twitter など) を使用するか、または Azure Active Directory を使用して組織アカウントを使用して認証できます。Active Directory フェデレーションサービス (AD FS) (ADFS)。Users can be authenticated using a username and password maintained in an application database, or using social identity providers (for example: Microsoft Accounts, Facebook, Google, Twitter), or using organizational accounts through Azure Active Directory or Active Directory Federation Services (ADFS).

Azure Active Directory と Windows Server Active Directory との統合Integration with Azure Active Directory and Windows Server Active Directory

認証に Azure Active Directory または Windows Server Active Directory (AD) を使用する ASP.NET プロジェクトを作成できるようになりました。You can now create ASP.NET projects that use Azure Active Directory or Windows Server Active Directory (AD) for authentication. 詳細については、「 Visual Studio 2013 での ASP.NET Web プロジェクトの作成」の「組織アカウント」を参照してください。For more information, see Organizational Accounts in Creating ASP.NET Web Projects in Visual Studio 2013.

OWIN の統合OWIN Integration

ASP.NET 認証は、任意の OWIN ベースのホストで使用できる OWIN ミドルウェアに基づいています。ASP.NET authentication is now based on OWIN middleware that can be used on any OWIN-based host. OWIN の詳細については、次のMICROSOFT OWIN Componentsのセクションを参照してください。For more information about OWIN, see the following Microsoft OWIN Components section.

Microsoft OWIN コンポーネントMicrosoft OWIN Components

Open Web Interface for .net (OWIN) は、.net web サーバーと web アプリケーションの間の抽象化を定義します。Open Web Interface for .NET (OWIN) defines an abstraction between .NET web servers and web applications. OWIN は、web アプリケーションをサーバーから分離することで、web アプリケーションをホストに依存しないようにします。OWIN decouples the web application from the server, making web applications host-agnostic. たとえば、IIS で OWIN ベースの web アプリケーションをホストしたり、カスタムプロセスで自己ホストしたりすることができます。For example, you can host an OWIN-based web application in IIS or self-host it in a custom process.

Microsoft OWIN コンポーネント (Katana プロジェクトとも呼ばれます) で導入された変更には、新しいサーバーおよびホストコンポーネント、新しいヘルパーライブラリとミドルウェア、新しい認証ミドルウェアが含まれます。Changes introduced in the Microsoft OWIN components (also known as the Katana project) include new server and host components, new helper libraries and middleware, and new authentication middleware.

OWIN と Katana の詳細については、「 OWIN および Katana の新機能」を参照してください。For more information about OWIN and Katana, see What's new in OWIN and Katana.

注: OWINアプリケーションを IIS クラシックモードで実行することはできません。統合モードで実行する必要があります。Note: OWIN applications cannot run in IIS classic mode; they must be run in integrated mode.

注: OWINアプリケーションは完全信頼で実行する必要があります。Note: OWIN applications must be run in full trust.

新しいサーバーとホストNew Servers and Hosts

このリリースでは、自己ホストのシナリオを可能にするために新しいコンポーネントが追加されました。With this release, new components were added to enable self-host scenarios. これらのコンポーネントには、次の NuGet パッケージが含まれます。These components include the following NuGet packages:

  • Owin. HttpListener.Microsoft.Owin.Host.HttpListener. HttpListenerを使用して HTTP 要求をリッスンし、それらを OWIN パイプラインに送信する OWIN サーバーを提供します。Provides an OWIN server that uses HttpListener to listen for HTTP requests and direct them into the OWIN pipeline.
  • Owinには、コンソールアプリケーションや Windows サービスなどのカスタムプロセスで Owin パイプラインを自己ホストする開発者向けのライブラリが用意されています。Microsoft.Owin.Hosting Provides a library for developers who wish to self-host an OWIN pipeline in a custom process, such as a console application or Windows service.
  • OwinhostOwinHost. には Microsoft.Owin.Hosting をラップするスタンドアロンの実行可能ファイルが用意されています。これにより、カスタムホストアプリケーションを作成しなくても、OWIN パイプラインを自己ホストできます。Provides a stand-alone executable that wraps Microsoft.Owin.Hosting and lets you self-host an OWIN pipeline without having to write a custom host application.

さらに、Microsoft.Owin.Host.SystemWeb パッケージでは、ミドルウェアがSystemwebサーバーにヒントを提供できるようになりました。これは、特定の ASP.NET パイプラインステージの間にミドルウェアを呼び出す必要があることを示しています。In addition, the Microsoft.Owin.Host.SystemWeb package now enables middleware to provide hints to the SystemWeb server, indicating that the middleware should be called during a specific ASP.NET pipeline stage. この機能は、ASP.NET パイプラインの早い段階で実行される認証ミドルウェアに特に役立ちます。This feature is particularly useful for authentication middleware, which should run early in the ASP.NET pipeline.

ヘルパーライブラリとミドルウェアHelper Libraries and Middleware

OWIN 仕様の関数と型の定義のみを使用して OWIN コンポーネントを記述することもできますが、新しい Microsoft.Owin パッケージでは、よりわかりやすい抽象化のセットが提供されます。Although you can write OWIN components using only the function and type definitions from the OWIN specification, the new Microsoft.Owin package provides a more user-friendly set of abstractions. このパッケージは、以前のいくつかのパッケージ (Owin.ExtensionsOwin.Typesなど) を単一の適切に構造化されたオブジェクトモデルに結合して、他の OWIN コンポーネントで簡単に使用できるようにします。This package combines several earlier packages (e.g., Owin.Extensions, Owin.Types) into a single, well-structured object model that can then be easily used by other OWIN components. 実際、Microsoft OWIN コンポーネントの大部分は、このパッケージを使用するようになりました。In fact, the majority of Microsoft OWIN components now use this package.

Note

OWINアプリケーションを IIS クラシックモードで実行することはできません。統合モードで実行する必要があります。OWIN applications cannot run in IIS classic mode; they must be run in integrated mode.

Note

OWINアプリケーションは完全信頼で実行する必要があります。OWIN applications must be run in full trust.

このリリースには、Owin パッケージも含まれています。これには、実行中の OWIN アプリケーションを検証するミドルウェア、およびエラーを調査するためのエラーページミドルウェアが含まれています。This release also includes the Microsoft.Owin.Diagnostics package, which includes middleware to validate a running OWIN application, plus error-page middleware to help investigate failures.

認証コンポーネントAuthentication Components

次の認証コンポーネントを使用できます。The following authentication components are available.

  • Owinします。Microsoft.Owin.Security.ActiveDirectory. オンプレミスまたはクラウドベースのディレクトリサービスを使用した認証を有効にします。Enables authentication using on-premise or cloud-based directory services.
  • Owin cookie を使用した認証を有効にします。Microsoft.Owin.Security.Cookies Enables authentication using cookies. このパッケージは、以前は Microsoft.Owin.Security.Formsという名前でした。This package was previously named Microsoft.Owin.Security.Forms.
  • Owinは、Facebook の OAuth ベースのサービスを使用した認証を可能にします。Microsoft.Owin.Security.Facebook Enables authentication using Facebook's OAuth-based service.
  • Owin Google の OpenID ベースのサービスを使用して認証を有効にします。Microsoft.Owin.Security.Google Enables authentication using Google's OpenID-based service.
  • Owinは jwt トークンを使用した認証を有効にします。Microsoft.Owin.Security.Jwt Enables authentication using JWT tokens.
  • Owin microsoft アカウントを使用して認証を有効にします。Microsoft.Owin.Security.MicrosoftAccount Enables authentication using Microsoft accounts.
  • Owinします。Microsoft.Owin.Security.OAuth. には、ベアラートークンを認証するための、OAuth 承認サーバーとミドルウェアが用意されています。Provides an OAuth authorization server as well as middleware for authenticating bearer tokens.
  • Owinは、Twitter の OAuth ベースのサービスを使用した認証を可能にします。Microsoft.Owin.Security.Twitter Enables authentication using Twitter's OAuth-based service.

このリリースには、クロスオリジン HTTP 要求を処理するためのミドルウェアを含む Microsoft.Owin.Cors パッケージも含まれています。This release also includes the Microsoft.Owin.Cors package, which contains middleware for processing cross-origin HTTP requests.

Note

JWT 署名のサポートは、Visual Studio 2013 の最終バージョンでは削除されています。Support for JWT signing has been removed in the final version of Visual Studio 2013.

Entity Framework 6Entity Framework 6

Entity Framework 6 の新機能とその他の変更点の一覧については、「 Entity Framework バージョンの履歴」を参照してください。For a list of new features and other changes in Entity Framework 6, see Entity Framework Version History.

ASP.NET Razor 3ASP.NET Razor 3

ASP.NET Razor 3 には、次の新機能が含まれています。ASP.NET Razor 3 includes the following new features:

  • タブ編集のサポート。Support for Tab editing. 以前は、タブを保持する オプションを使用すると、Visual Studio の ドキュメントのフォーマット コマンド、自動インデント、および 自動書式設定 は正常に動作しませんでした。Previously, the Format Document command, auto indenting, and auto formatting in Visual Studio did not work correctly when using the Keep Tabs option. この変更により、タブ書式設定用の Razor コードの Visual Studio の書式設定が修正します。This change corrects Visual Studio formatting for Razor code for tab formatting.
  • リンクを生成するときの URL 書き換え規則のサポート。Support for URL Rewrite rules when generating links.
  • 透過的セキュリティ属性の削除。Removal of security transparent attribute.

    Note

    これは互換性に影響する変更であり、Razor 3 は MVC4 以前と互換性がありませんが、Razor 2 は MVC5 または MVC5 に対してコンパイルされたアセンブリと互換性がありません。This is a breaking change, and makes Razor 3 incompatible with MVC4 and earlier, while Razor 2 is incompatible with MVC5 or assemblies compiled against MVC5.

プレリリース版からの Visual Studio 2013 で修正された Razor 3 の問題については、こちらを参照してください。Razor 3 issues fixed in Visual Studio 2013 from pre-release versions can be found here.

ASP.NET アプリの中断ASP.NET App Suspend

ASP.NET App Suspend は、1台のコンピューターで多数の ASP.NET サイトをホストするためのユーザーエクスペリエンスと経済モデルを根本的に変更する、.NET Framework 4.5.1 のゲーム変更機能です。ASP.NET App Suspend is a game-changing feature in the .NET Framework 4.5.1 that radically changes the user experience and economic model for hosting large numbers of ASP.NET sites on a single machine. 詳細については、「 ASP.NET App Suspend –応答性の高い共有 .net web ホスティング」を参照してください。For more information, see ASP.NET App Suspend – responsive shared .NET web hosting.

既知の問題と重大な変更Known Issues and Breaking Changes

このセクションでは、Visual Studio 2013 の ASP.NET and Web Tools における既知の問題と重大な変更について説明します。This section describes known issues and breaking changes in the ASP.NET and Web Tools for Visual Studio 2013.

NuGetNuGet

ASP.NET Web APIASP.NET Web API

  1. $select$expandのサポートが追加されたため、ODataQueryOptions<T>.ApplyTo(IQueryable) IQueryable<T> は常に返されません。ODataQueryOptions<T>.ApplyTo(IQueryable) doesn't return IQueryable<T> always, as we added support for $select and $expand.

    ODataQueryOptions<T> の前のサンプルでは、ApplyTo から IQueryable<T>に戻り値が常にキャストされています。Our earlier samples for ODataQueryOptions<T> always casted the return value from ApplyTo to IQueryable<T>. これは、以前にサポートしていたクエリオプション ($filter$orderby$skip$top) によってクエリの構造が変更されないため、これまでに動作しました。This worked earlier because the query options that we supported earlier ($filter, $orderby, $skip, $top) do not change the shape of the query. これで $expand $select がサポートされるようになり、ApplyTo からの戻り値が常に IQueryable<T> されることはなくなりました。Now that we support $select and $expand the return value from ApplyTo will not be IQueryable<T> always.

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

    前に示したサンプルコードを使用している場合は、クライアントが $select$expandを送信しない場合は動作を続行します。If you are using the sample code from earlier, it will continue working if the client does not send $select and $expand. ただし、$select$expand をサポートする場合は、そのコードをこのコードに変更する必要があります。However, if you wish to support $select and $expand you have to change that code to this.

    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. 要求の Url または RequestContext。 Url は、バッチ要求の実行中に null になります。Request.Url or RequestContext.Url is null during a batch request

    バッチ処理のシナリオでは、 Urlhelperは、要求の UrlまたはRequestContextからアクセスした場合に null になります。In a batching scenario, UrlHelper is null when accessed from Request.Url or RequestContext.Url.

    現在、この問題はここで追跡されています: Batchrequestcontext。バッチ処理要求の Url が nullです。This issue is currently tracked here: BatchRequestContext.Url is null for batching request.

    この問題を回避するには、次の例のようにUrlhelperの新しいインスタンスを作成します。The workaround for this issue is to create a new instance of UrlHelper, as in the following example:

    UrlHelper の新しいインスタンスを作成していますCreating a new instance of UrlHelper

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

ASP.NET MVCASP.NET MVC

  1. MVC5 と OrgAuth を使用しているときに、検証を行うビューがある場合、データをビューにポストすると、次のエラーが表示されることがあります。When using MVC5 and OrgAuth, if you have views which do AntiForgerToken validation, you might come across the following error when you post data to the view:

    エラー:Error:

    '/' アプリケーションでサーバーエラーが発生しています。Server Error in '/' Application.

    型 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier' または 'https://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider' のクレームが、指定された ClaimsIdentity に存在しませんでした。要求ベースの認証による偽造防止トークンのサポートを有効にするには、構成された要求プロバイダーが、生成した ClaimsIdentity インスタンスに対して両方の要求を提供していることを確認してください。構成された要求プロバイダーが、一意の識別子として別の要求の種類を使用する場合は、静的なプロパティの UniqueClaimTypeIdentifier を設定することによって構成できます。A claim of type 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier' or 'https://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider' was not present on the provided ClaimsIdentity. To enable anti-forgery token support with claims-based authentication, please verify that the configured claims provider is providing both of these claims on the ClaimsIdentity instances it generates. If the configured claims provider instead uses a different claim type as a unique identifier, it can be configured by setting the static property AntiForgeryConfig.UniqueClaimTypeIdentifier.

    対応策:Workaround:

    Global.asax に次の行を追加して修正します。Add the following line in Global.asax to fix it:

    AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Name;

    これは、次のリリースで修正されます。This will be fixed for the next release.

  2. MVC4 アプリを MVC5 にアップグレードしたら、ソリューションをビルドして起動します。After upgrading an MVC4 app to MVC5, build the solution and launch it. 次のエラーが表示されます。You should see the following error:

    あるこのセクションは、[B] System.web. Web.config......................................[A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to [B]System.Web.WebPages.Razor.Configuration.HostSection. は、場所 ' C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35 \ ' のコンテキスト ' Default ' にある ' System.web. Web. Razor, Version = 2.0.0.0, Culture = ニュートラル, PublicKeyToken = 31bf3856ad364e35 ' から生成されます。Type A originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. 型 B の生成元は、' 3.0.0.0, Version =, Culture = ニュートラル, PublicKeyToken = 31bf3856ad364e35 ' というコンテキストで、場所 ' C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\6d05bbd0\e8b5908e\assembly\dl3\c9cbca63\f8910382_62の既定値 ' になります. ' を指定します。Type B originates from 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location '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'.

    上記のエラーを修正するには、プロジェクトのすべての web.config ファイル (Views フォルダー内のファイルを含む) を開き、次の手順を実行します。To fix the above error, open all the Web.config files (including the ones in the Views folder) in your project and do the following:

    1. "4.0.0.0" のバージョン "" のすべての出現箇所を "5.0.0.0" に更新します。Update all occurrences of version "4.0.0.0" of "System.Web.Mvc" to "5.0.0.0".

    2. "3.0.0.0" のバージョン "2.0.0.0" のすべての出現箇所を更新し、" を" "して "、"" に変更します。また、Update all occurrences of version "2.0.0.0" of "System.Web.Helpers", "System.Web.WebPages" and "System.Web.WebPages.Razor" to "3.0.0.0"

      たとえば、上記の変更を行った後、アセンブリのバインドは次のようになります。For example, after you make the above changes, the assembly bindings should look like this:

      <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 プロジェクトを MVC 5 にアップグレードする方法については、「 ASP.NET mvc 4 と WEB Api プロジェクトを ASP.NET mvc 5 および WEB api 2 にアップグレードする方法」を参照してください。For information on upgrading MVC 4 projects to MVC 5, see How to Upgrade an ASP.NET MVC 4 and Web API Project to ASP.NET MVC 5 and Web API 2.

  3. JQuery の控えめな検証でクライアント側の検証を使用する場合、型 = ' number ' の HTML 入力要素の検証メッセージが正しくないことがあります。When using client-side validation with jQuery Unobtrusive Validation, the validation message is sometimes incorrect for an HTML input element with type='number'. 正しいメッセージではなく有効な数値が入力されている場合は、必要な値 ("Age フィールドが必要") の検証エラーが表示されます。The validation error for a required value ("The Age field is required") is shown when an invalid number is entered instead of the correct message that a valid number is required.

    この問題は、Create ビューと Edit ビューで整数プロパティを持つモデルのスキャフォールディングコードでよく見られます。This issue is commonly found with scaffolded code for a model with an integer property on the Create and Edit views.

    この問題を回避するには、エディターヘルパーを次のように変更します。To work around this issue, change the editor helper from:

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

    宛先:To:

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

  4. ASP.NET MVC 5 では、部分信頼はサポートされなくなりました。ASP.NET MVC 5 no longer supports partial trust. MVC または WebAPI バイナリにリンクするプロジェクトでは、 Securitytransparent属性とAllowPartiallyTrustedCallers属性を削除する必要があります。Projects linking to the MVC or WebAPI binaries should remove the SecurityTransparent attribute and the AllowPartiallyTrustedCallers attribute. これらの属性を削除すると、次のようなコンパイラエラーが発生しなくなります。Removing these attributes will eliminate compiler errors such as the following.

    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.

    この結果、同じアプリケーションで4.0 および5.0 アセンブリを使用することはできません。Note, as a side effect of this you cannot use 4.0 and 5.0 assemblies in the same application. すべてを5.0 に更新する必要があります。You need to update all of them to 5.0.

Web サイトがイントラネットゾーンでホストされている場合、Facebook の承認を持つ SPA テンプレートで IE が不安定になることがあるSPA Template with Facebook authorization may cause instability in IE while the web site is hosted in intranet zone

SPA テンプレートは、Facebook との外部ログインを提供します。The SPA template provides external log in with Facebook. テンプレートを使用して作成したプロジェクトがローカルで実行されている場合、サインインすると、IE がクラッシュする可能性があります。When the project created with the template is running locally, signing in may cause IE to crash.

解決方法:Solution:

  1. Web サイトをインターネットゾーンでホストします。もしくはHost the web site in internet zone; or

  2. IE 以外のブラウザーでシナリオをテストします。Test the scenario in a browser other than IE.

Web フォームのスキャフォールディングWeb Forms Scaffolding

Web フォームのスキャフォールディングは VS2013 から削除され、Visual Studio の今後の更新プログラムで使用できるようになります。Web Forms Scaffolding has been removed from VS2013 and will be available in a future update to Visual Studio. ただし、MVC の依存関係を追加し、MVC のスキャフォールディングを生成することで、Web フォームプロジェクト内でスキャフォールディングを使用することができます。However, you can still use scaffolding within a Web Forms project by adding MVC dependencies and generating scaffolding for MVC. プロジェクトには、Web フォームと MVC の組み合わせが含まれます。Your project will contain a combination of Web Forms and MVC.

MVC を Web フォームプロジェクトに追加するには、新しいスキャフォールディングアイテムを追加し、 [mvc 5 の依存関係] を選択します。To add MVC to your Web Forms project, add a new scaffolded item and select MVC 5 Dependencies. すべてのコンテンツファイル (スクリプトなど) が必要かどうかに応じて、[最小] または [完全] を選択します。Select either Minimal or Full depending on whether you need all of the content files, such as scripts. 次に、MVC のスキャフォールディング item を追加します。これにより、プロジェクトにビューとコントローラーが作成されます。Then, add a scaffolded item for MVC, which will create views and a controller in your project.

MVC および Web API のスキャフォールディング-HTTP 404、見つからないエラーMVC and Web API Scaffolding - HTTP 404, Not Found error

スキャフォールディング項目をプロジェクトに追加したときにエラーが発生した場合は、プロジェクトが不整合な状態のままになる可能性があります。If an error is encountered when adding a scaffolded item to a project, it is possible your project will be left in an inconsistent state. スキャフォールディングに加えられた変更の一部はロールバックされますが、インストールされている NuGet パッケージなどのその他の変更はロールバックされません。Some of the changes made be scaffolding will be rolled back but other changes, such as the installed NuGet packages, will not be rolled back. ルーティング構成の変更がロールバックされた場合、スキャフォールディング items に移動すると、ユーザーには HTTP 404 エラーが表示されます。If the routing configuration changes are rolled back, users will receive an HTTP 404 error when navigating to scaffolded items.

対応策 :Workaround:

  • MVC のこのエラーを修正するには、新しいスキャフォールディング項目を追加し、[MVC 5 の依存関係] ([最小] または [完全]) を選択します。To fix this error for MVC, add a new scaffolded item and select MVC 5 Dependencies (either Minimal or Full). このプロセスによって、必要なすべての変更がプロジェクトに追加されます。This process will add all of the required changes to your project.

  • このエラーを解決するには、次のように Web API を使用します。To fix this error for Web API:

    1. Webapiconfig.cs クラスをプロジェクトに追加します。Add the WebApiConfig class to your project.

      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 で Webapiconfig.cs をアプリケーション_に構成します。Configure WebApiConfig.Register in the Application_Start method in Global.asax as follows:

      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