MVC functional test cleanup part 1

- #3612 (subpart 1 of 2)
- delete six sites and associated tests entirely
  - `ActionResultsWebSite`
  - `ActivatorWebSite`
  - `ControllerDiscoveryConventionsWebSite`
  - `LoggingWebSite`
  - `LowercaseUrlsWebSite`
  - `ModelBindingWebSite`, now covered in integration tests
  - remove now-unused `FilteredDefaultAssemblyProviderFixture`, `LoggingAssert` and `LoggingExtensions`
- move six test web sites into `./samples`
  - `CustomRouteWebSite` -> `CustomRouteSample.Web`
  - `FormatFilterWebSite` -> `FormatFilterSample.Web`
  - `InlineConstraintsWebSite` -> `InlineConstraintSample.Web` (now singular)
  - `JsonPatchWebSite` -> `JsonPatchSample.Web`
  - `LocalizationWebSite` -> `LocalizationSample.Web`
  - `RazorEmbeddedViewsWebSite` -> `EmbeddedViewSample.Web` (no longer "Razor" and now singular)
  - do some cleanup: remove test dependencies, shorten sample controller names, use more attribute routing
- correct "license" spelling in `ApplicationModelWebSite`
This commit is contained in:
Doug Bunting 2015-12-11 12:35:13 -08:00
Родитель a5e4b91154
Коммит 19e6fb5719
277 изменённых файлов: 654 добавлений и 8604 удалений

Просмотреть файл

@ -87,6 +87,18 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "MvcSandbox", "samples\MvcSa
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "UrlHelperSample.Web", "samples\UrlHelperSample.Web\UrlHelperSample.Web.xproj", "{73F095D2-D0BD-4D03-BC17-D7A5EF0C0191}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "CustomRouteSample.Web", "samples\CustomRouteSample.Web\CustomRouteSample.Web.xproj", "{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "EmbeddedViewSample.Web", "samples\EmbeddedViewSample.Web\EmbeddedViewSample.Web.xproj", "{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "FormatFilterSample.Web", "samples\FormatFilterSample.Web\FormatFilterSample.Web.xproj", "{AC9BE567-540E-4C70-90C2-AAF021307A80}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "InlineConstraintSample.Web", "samples\InlineConstraintSample.Web\InlineConstraintSample.Web.xproj", "{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "JsonPatchSample.Web", "samples\JsonPatchSample.Web\JsonPatchSample.Web.xproj", "{DAB1252D-577C-4912-98BE-1A812BF83F86}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "LocalizationSample.Web", "samples\LocalizationSample.Web\LocalizationSample.Web.xproj", "{FCFE6024-2720-49B4-8257-9DBC6114F0F1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -507,6 +519,78 @@ Global
{73F095D2-D0BD-4D03-BC17-D7A5EF0C0191}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{73F095D2-D0BD-4D03-BC17-D7A5EF0C0191}.Release|x86.ActiveCfg = Release|Any CPU
{73F095D2-D0BD-4D03-BC17-D7A5EF0C0191}.Release|x86.Build.0 = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|x86.ActiveCfg = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|x86.Build.0 = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Any CPU.Build.0 = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|x86.ActiveCfg = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|x86.Build.0 = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|x86.ActiveCfg = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|x86.Build.0 = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Any CPU.Build.0 = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|x86.ActiveCfg = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|x86.Build.0 = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|x86.ActiveCfg = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|x86.Build.0 = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Any CPU.Build.0 = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|x86.ActiveCfg = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|x86.Build.0 = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|x86.ActiveCfg = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|x86.Build.0 = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Any CPU.Build.0 = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|x86.ActiveCfg = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|x86.Build.0 = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|x86.ActiveCfg = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|x86.Build.0 = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Any CPU.Build.0 = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|x86.ActiveCfg = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|x86.Build.0 = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|x86.ActiveCfg = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|x86.Build.0 = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Any CPU.Build.0 = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|x86.ActiveCfg = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -548,5 +632,11 @@ Global
{9879B5D5-2325-4A81-B4DF-F279FE8FEEB4} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{14ED4476-9F24-4776-8417-EA6927F6C9C9} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{73F095D2-D0BD-4D03-BC17-D7A5EF0C0191} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{AC9BE567-540E-4C70-90C2-AAF021307A80} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{DAB1252D-577C-4912-98BE-1A812BF83F86} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{FCFE6024-2720-49B4-8257-9DBC6114F0F1} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
EndGlobalSection
EndGlobal

264
Mvc.sln
Просмотреть файл

@ -29,10 +29,6 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.Functi
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "BasicWebSite", "test\WebSites\BasicWebSite\BasicWebSite.xproj", "{34DF1487-12C6-476C-BE0A-F31DF1939AE5}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ActivatorWebSite", "test\WebSites\ActivatorWebSite\ActivatorWebSite.xproj", "{DB79BCBA-9538-4A53-87D9-77728E2BAA39}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "InlineConstraintsWebSite", "test\WebSites\InlineConstraintsWebSite\InlineConstraintsWebSite.xproj", "{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.TestConfiguration", "test\WebSites\Microsoft.AspNet.Mvc.TestConfiguration\Microsoft.AspNet.Mvc.TestConfiguration.xproj", "{680D75ED-601F-4D86-B01B-1072D0C31B8C}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RoutingWebSite", "test\WebSites\RoutingWebSite\RoutingWebSite.xproj", "{42CDBF4A-E238-4C0F-A416-44588363EB4C}"
@ -43,8 +39,6 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RazorWebSite", "test\WebSit
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "FormatterWebSite", "test\WebSites\FormatterWebSite\FormatterWebSite.xproj", "{62735776-46FF-4170-9392-02E128A69B89}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ModelBindingWebSite", "test\WebSites\ModelBindingWebSite\ModelBindingWebSite.xproj", "{EE1AB716-F102-4CA3-AD2C-214A44B459A0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FAD65E9C-3CF3-4F68-9757-C7358604030B}"
ProjectSection(SolutionItems) = preProject
global.json = global.json
@ -80,44 +74,28 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.TagHel
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "PrecompilationWebSite", "test\WebSites\PrecompilationWebSite\PrecompilationWebSite.xproj", "{59E1BE90-92C1-4D35-ADCC-B69F49077C81}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RazorEmbeddedViewsWebSite", "test\WebSites\RazorEmbeddedViewsWebSite\RazorEmbeddedViewsWebSite.xproj", "{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "CompositeViewEngineWebSite", "test\WebSites\CompositeViewEngineWebSite\CompositeViewEngineWebSite.xproj", "{A853B2BA-4449-4908-A416-5A3C027FC22B}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "HtmlGenerationWebSite", "test\WebSites\HtmlGenerationWebSite\HtmlGenerationWebSite.xproj", "{920F8A0E-6F7D-4BBE-84FF-840B89099BE6}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ActionResultsWebSite", "test\WebSites\ActionResultsWebSite\ActionResultsWebSite.xproj", "{0A6BB4C0-48D3-4E7F-952B-B8917345E075}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "LoggingWebSite", "test\WebSites\LoggingWebSite\LoggingWebSite.xproj", "{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ErrorPageMiddlewareWebSite", "test\WebSites\ErrorPageMiddlewareWebSite\ErrorPageMiddlewareWebSite.xproj", "{AD545A5B-2BA5-4314-88AC-FC2ACF2CC718}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ActionConstraintsWebSite", "test\WebSites\ActionConstraintsWebSite\ActionConstraintsWebSite.xproj", "{AF210F69-9D31-43AF-AC3A-CD366E252218}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "CustomRouteWebSite", "test\WebSites\CustomRouteWebSite\CustomRouteWebSite.xproj", "{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "XmlFormattersWebSite", "test\WebSites\XmlFormattersWebSite\XmlFormattersWebSite.xproj", "{C3123A70-41C4-4122-AD1C-D35DF8958DD7}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "FormatFilterWebSite", "test\WebSites\FormatFilterWebSite\FormatFilterWebSite.xproj", "{AC9BE567-540E-4C70-90C2-AAF021307A80}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ControllersFromServicesWebSite", "test\WebSites\ControllersFromServicesWebSite\ControllersFromServicesWebSite.xproj", "{983741B2-4424-4ED1-9B03-7675A67230C8}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ControllersFromServicesClassLibrary", "test\WebSites\ControllersFromServicesClassLibrary\ControllersFromServicesClassLibrary.xproj", "{551DC89E-2A13-4CF2-83D7-1ADD802443D5}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "UserClassLibrary", "test\WebSites\UserClassLibrary\UserClassLibrary.xproj", "{C651F432-4EBE-41A6-BAD2-3E07CCBA209C}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ControllerDiscoveryConventionsWebSite", "test\WebSites\ControllerDiscoveryConventionsWebSite\ControllerDiscoveryConventionsWebSite.xproj", "{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "LowercaseUrlsWebSite", "test\WebSites\LowercaseUrlsWebSite\LowercaseUrlsWebSite.xproj", "{BCDB13A6-7D6E-485E-8424-A156432B71AC}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.TestCommon", "test\Microsoft.AspNet.Mvc.TestCommon\Microsoft.AspNet.Mvc.TestCommon.xproj", "{F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "CorsWebSite", "test\WebSites\CorsWebSite\CorsWebSite.xproj", "{94BA134D-04B3-48AA-BA55-5A4DB8640F2D}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "CorsMiddlewareWebSite", "test\WebSites\CorsMiddlewareWebSite\CorsMiddlewareWebSite.xproj", "{B42D4844-FFF8-4EC2-88D1-3AE95234D9EB}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "JsonPatchWebSite", "test\WebSites\JsonPatchWebSite\JsonPatchWebSite.xproj", "{DAB1252D-577C-4912-98BE-1A812BF83F86}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.IntegrationTests", "test\Microsoft.AspNet.Mvc.IntegrationTests\Microsoft.AspNet.Mvc.IntegrationTests.xproj", "{864FA09D-1E48-403A-A6C8-4F079D2A30F0}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.Abstractions", "src\Microsoft.AspNet.Mvc.Abstractions\Microsoft.AspNet.Mvc.Abstractions.xproj", "{1154203C-7579-4525-906E-BC55268421C1}"
@ -128,8 +106,6 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.ApiExp
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.Abstractions.Test", "test\Microsoft.AspNet.Mvc.Abstractions.Test\Microsoft.AspNet.Mvc.Abstractions.Test.xproj", "{DA000953-7532-4DF5-8DB9-8143DF98D999}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "LocalizationWebSite", "test\WebSites\LocalizationWebSite\LocalizationWebSite.xproj", "{FCFE6024-2720-49B4-8257-9DBC6114F0F1}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "AntiforgeryTokenWebSite", "test\WebSites\AntiforgeryTokenWebSite\AntiforgeryTokenWebSite.xproj", "{A353B17E-A940-4CE8-8BF9-179E24A9041F}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "MvcMinimalSample.Web", "samples\MvcMinimalSample.Web\MvcMinimalSample.Web.xproj", "{F21E225B-190B-4DAA-8B0A-05986D231F56}"
@ -164,6 +140,18 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "MvcSandbox", "samples\MvcSa
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "UrlHelperSample.Web", "samples\UrlHelperSample.Web\UrlHelperSample.Web.xproj", "{73F095D2-D0BD-4D03-BC17-D7A5EF0C0191}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "CustomRouteSample.Web", "samples\CustomRouteSample.Web\CustomRouteSample.Web.xproj", "{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "EmbeddedViewSample.Web", "samples\EmbeddedViewSample.Web\EmbeddedViewSample.Web.xproj", "{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "FormatFilterSample.Web", "samples\FormatFilterSample.Web\FormatFilterSample.Web.xproj", "{AC9BE567-540E-4C70-90C2-AAF021307A80}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "InlineConstraintSample.Web", "samples\InlineConstraintSample.Web\InlineConstraintSample.Web.xproj", "{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "JsonPatchSample.Web", "samples\JsonPatchSample.Web\JsonPatchSample.Web.xproj", "{DAB1252D-577C-4912-98BE-1A812BF83F86}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "LocalizationSample.Web", "samples\LocalizationSample.Web\LocalizationSample.Web.xproj", "{FCFE6024-2720-49B4-8257-9DBC6114F0F1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -264,26 +252,6 @@ Global
{34DF1487-12C6-476C-BE0A-F31DF1939AE5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{34DF1487-12C6-476C-BE0A-F31DF1939AE5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{34DF1487-12C6-476C-BE0A-F31DF1939AE5}.Release|x86.ActiveCfg = Release|Any CPU
{DB79BCBA-9538-4A53-87D9-77728E2BAA39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DB79BCBA-9538-4A53-87D9-77728E2BAA39}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DB79BCBA-9538-4A53-87D9-77728E2BAA39}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DB79BCBA-9538-4A53-87D9-77728E2BAA39}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DB79BCBA-9538-4A53-87D9-77728E2BAA39}.Debug|x86.ActiveCfg = Debug|Any CPU
{DB79BCBA-9538-4A53-87D9-77728E2BAA39}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DB79BCBA-9538-4A53-87D9-77728E2BAA39}.Release|Any CPU.Build.0 = Release|Any CPU
{DB79BCBA-9538-4A53-87D9-77728E2BAA39}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DB79BCBA-9538-4A53-87D9-77728E2BAA39}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DB79BCBA-9538-4A53-87D9-77728E2BAA39}.Release|x86.ActiveCfg = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|x86.ActiveCfg = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Any CPU.Build.0 = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|x86.ActiveCfg = Release|Any CPU
{680D75ED-601F-4D86-B01B-1072D0C31B8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{680D75ED-601F-4D86-B01B-1072D0C31B8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{680D75ED-601F-4D86-B01B-1072D0C31B8C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@ -334,16 +302,6 @@ Global
{62735776-46FF-4170-9392-02E128A69B89}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{62735776-46FF-4170-9392-02E128A69B89}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{62735776-46FF-4170-9392-02E128A69B89}.Release|x86.ActiveCfg = Release|Any CPU
{EE1AB716-F102-4CA3-AD2C-214A44B459A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EE1AB716-F102-4CA3-AD2C-214A44B459A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EE1AB716-F102-4CA3-AD2C-214A44B459A0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{EE1AB716-F102-4CA3-AD2C-214A44B459A0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{EE1AB716-F102-4CA3-AD2C-214A44B459A0}.Debug|x86.ActiveCfg = Debug|Any CPU
{EE1AB716-F102-4CA3-AD2C-214A44B459A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EE1AB716-F102-4CA3-AD2C-214A44B459A0}.Release|Any CPU.Build.0 = Release|Any CPU
{EE1AB716-F102-4CA3-AD2C-214A44B459A0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{EE1AB716-F102-4CA3-AD2C-214A44B459A0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{EE1AB716-F102-4CA3-AD2C-214A44B459A0}.Release|x86.ActiveCfg = Release|Any CPU
{C6E5AFFA-890A-448F-8DE3-878B1D3C9FC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C6E5AFFA-890A-448F-8DE3-878B1D3C9FC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C6E5AFFA-890A-448F-8DE3-878B1D3C9FC7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@ -494,18 +452,6 @@ Global
{59E1BE90-92C1-4D35-ADCC-B69F49077C81}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{59E1BE90-92C1-4D35-ADCC-B69F49077C81}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{59E1BE90-92C1-4D35-ADCC-B69F49077C81}.Release|x86.ActiveCfg = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|x86.ActiveCfg = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|x86.Build.0 = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Any CPU.Build.0 = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|x86.ActiveCfg = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|x86.Build.0 = Release|Any CPU
{A853B2BA-4449-4908-A416-5A3C027FC22B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A853B2BA-4449-4908-A416-5A3C027FC22B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A853B2BA-4449-4908-A416-5A3C027FC22B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@ -530,30 +476,6 @@ Global
{920F8A0E-6F7D-4BBE-84FF-840B89099BE6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{920F8A0E-6F7D-4BBE-84FF-840B89099BE6}.Release|x86.ActiveCfg = Release|Any CPU
{920F8A0E-6F7D-4BBE-84FF-840B89099BE6}.Release|x86.Build.0 = Release|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Debug|x86.ActiveCfg = Debug|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Debug|x86.Build.0 = Debug|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Release|Any CPU.Build.0 = Release|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Release|x86.ActiveCfg = Release|Any CPU
{0A6BB4C0-48D3-4E7F-952B-B8917345E075}.Release|x86.Build.0 = Release|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Debug|x86.ActiveCfg = Debug|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Debug|x86.Build.0 = Debug|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Release|Any CPU.Build.0 = Release|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Release|x86.ActiveCfg = Release|Any CPU
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E}.Release|x86.Build.0 = Release|Any CPU
{AD545A5B-2BA5-4314-88AC-FC2ACF2CC718}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD545A5B-2BA5-4314-88AC-FC2ACF2CC718}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD545A5B-2BA5-4314-88AC-FC2ACF2CC718}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@ -578,18 +500,6 @@ Global
{AF210F69-9D31-43AF-AC3A-CD366E252218}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AF210F69-9D31-43AF-AC3A-CD366E252218}.Release|x86.ActiveCfg = Release|Any CPU
{AF210F69-9D31-43AF-AC3A-CD366E252218}.Release|x86.Build.0 = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|x86.ActiveCfg = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|x86.Build.0 = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Any CPU.Build.0 = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|x86.ActiveCfg = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|x86.Build.0 = Release|Any CPU
{C3123A70-41C4-4122-AD1C-D35DF8958DD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C3123A70-41C4-4122-AD1C-D35DF8958DD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C3123A70-41C4-4122-AD1C-D35DF8958DD7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@ -602,18 +512,6 @@ Global
{C3123A70-41C4-4122-AD1C-D35DF8958DD7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{C3123A70-41C4-4122-AD1C-D35DF8958DD7}.Release|x86.ActiveCfg = Release|Any CPU
{C3123A70-41C4-4122-AD1C-D35DF8958DD7}.Release|x86.Build.0 = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|x86.ActiveCfg = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|x86.Build.0 = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Any CPU.Build.0 = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|x86.ActiveCfg = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|x86.Build.0 = Release|Any CPU
{983741B2-4424-4ED1-9B03-7675A67230C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{983741B2-4424-4ED1-9B03-7675A67230C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{983741B2-4424-4ED1-9B03-7675A67230C8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@ -650,30 +548,6 @@ Global
{C651F432-4EBE-41A6-BAD2-3E07CCBA209C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{C651F432-4EBE-41A6-BAD2-3E07CCBA209C}.Release|x86.ActiveCfg = Release|Any CPU
{C651F432-4EBE-41A6-BAD2-3E07CCBA209C}.Release|x86.Build.0 = Release|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Debug|x86.ActiveCfg = Debug|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Debug|x86.Build.0 = Debug|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Release|Any CPU.Build.0 = Release|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Release|x86.ActiveCfg = Release|Any CPU
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE}.Release|x86.Build.0 = Release|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Debug|x86.ActiveCfg = Debug|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Debug|x86.Build.0 = Debug|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Release|Any CPU.Build.0 = Release|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Release|x86.ActiveCfg = Release|Any CPU
{BCDB13A6-7D6E-485E-8424-A156432B71AC}.Release|x86.Build.0 = Release|Any CPU
{F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F504357E-C2E1-4818-BA5C-9A2EAC25FEE5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@ -709,18 +583,6 @@ Global
{B42D4844-FFF8-4EC2-88D1-3AE95234D9EB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B42D4844-FFF8-4EC2-88D1-3AE95234D9EB}.Release|x86.ActiveCfg = Release|Any CPU
{B42D4844-FFF8-4EC2-88D1-3AE95234D9EB}.Release|x86.Build.0 = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|x86.ActiveCfg = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|x86.Build.0 = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Any CPU.Build.0 = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|x86.ActiveCfg = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|x86.Build.0 = Release|Any CPU
{864FA09D-1E48-403A-A6C8-4F079D2A30F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{864FA09D-1E48-403A-A6C8-4F079D2A30F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{864FA09D-1E48-403A-A6C8-4F079D2A30F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@ -781,18 +643,6 @@ Global
{DA000953-7532-4DF5-8DB9-8143DF98D999}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DA000953-7532-4DF5-8DB9-8143DF98D999}.Release|x86.ActiveCfg = Release|Any CPU
{DA000953-7532-4DF5-8DB9-8143DF98D999}.Release|x86.Build.0 = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|x86.ActiveCfg = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|x86.Build.0 = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Any CPU.Build.0 = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|x86.ActiveCfg = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|x86.Build.0 = Release|Any CPU
{A353B17E-A940-4CE8-8BF9-179E24A9041F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A353B17E-A940-4CE8-8BF9-179E24A9041F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A353B17E-A940-4CE8-8BF9-179E24A9041F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@ -997,6 +847,78 @@ Global
{73F095D2-D0BD-4D03-BC17-D7A5EF0C0191}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{73F095D2-D0BD-4D03-BC17-D7A5EF0C0191}.Release|x86.ActiveCfg = Release|Any CPU
{73F095D2-D0BD-4D03-BC17-D7A5EF0C0191}.Release|x86.Build.0 = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|x86.ActiveCfg = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Debug|x86.Build.0 = Debug|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Any CPU.Build.0 = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|x86.ActiveCfg = Release|Any CPU
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B}.Release|x86.Build.0 = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|x86.ActiveCfg = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Debug|x86.Build.0 = Debug|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Any CPU.Build.0 = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|x86.ActiveCfg = Release|Any CPU
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D}.Release|x86.Build.0 = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|x86.ActiveCfg = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Debug|x86.Build.0 = Debug|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Any CPU.Build.0 = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|x86.ActiveCfg = Release|Any CPU
{AC9BE567-540E-4C70-90C2-AAF021307A80}.Release|x86.Build.0 = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|x86.ActiveCfg = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Debug|x86.Build.0 = Debug|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Any CPU.Build.0 = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|x86.ActiveCfg = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|x86.Build.0 = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|x86.ActiveCfg = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Debug|x86.Build.0 = Debug|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Any CPU.Build.0 = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|x86.ActiveCfg = Release|Any CPU
{DAB1252D-577C-4912-98BE-1A812BF83F86}.Release|x86.Build.0 = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|x86.ActiveCfg = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Debug|x86.Build.0 = Debug|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Any CPU.Build.0 = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|x86.ActiveCfg = Release|Any CPU
{FCFE6024-2720-49B4-8257-9DBC6114F0F1}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -1012,14 +934,11 @@ Global
{16703B76-C9F7-4C75-AE6C-53D92E308E3C} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{323D0C04-B518-4A8F-8A8E-3546AD153D34} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{34DF1487-12C6-476C-BE0A-F31DF1939AE5} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{DB79BCBA-9538-4A53-87D9-77728E2BAA39} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{680D75ED-601F-4D86-B01B-1072D0C31B8C} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{42CDBF4A-E238-4C0F-A416-44588363EB4C} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{5F945B82-FE5F-425C-956C-8BC2F2020254} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{B07CAF59-11ED-40E3-A5DB-E1178F84FA78} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{62735776-46FF-4170-9392-02E128A69B89} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{EE1AB716-F102-4CA3-AD2C-214A44B459A0} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{C6E5AFFA-890A-448F-8DE3-878B1D3C9FC7} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{1976AC4A-FEA4-4587-A158-D9F79736D2B6} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{61061528-071E-424E-965A-07BCC2F02672} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
@ -1035,31 +954,22 @@ Global
{B2347320-308E-4D2B-AEC8-005DFA68B0C9} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
{860119ED-3DB1-424D-8D0A-30132A8A7D96} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{59E1BE90-92C1-4D35-ADCC-B69F49077C81} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{A853B2BA-4449-4908-A416-5A3C027FC22B} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{920F8A0E-6F7D-4BBE-84FF-840B89099BE6} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{0A6BB4C0-48D3-4E7F-952B-B8917345E075} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{0AD78AB5-D67C-49BC-81B1-0C51BFA82B5E} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{AD545A5B-2BA5-4314-88AC-FC2ACF2CC718} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{AF210F69-9D31-43AF-AC3A-CD366E252218} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{C3123A70-41C4-4122-AD1C-D35DF8958DD7} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{AC9BE567-540E-4C70-90C2-AAF021307A80} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{983741B2-4424-4ED1-9B03-7675A67230C8} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{551DC89E-2A13-4CF2-83D7-1ADD802443D5} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{C651F432-4EBE-41A6-BAD2-3E07CCBA209C} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{A19022EF-9BA3-4349-94E4-F48E13E1C8AE} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{BCDB13A6-7D6E-485E-8424-A156432B71AC} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{F504357E-C2E1-4818-BA5C-9A2EAC25FEE5} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{94BA134D-04B3-48AA-BA55-5A4DB8640F2D} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{B42D4844-FFF8-4EC2-88D1-3AE95234D9EB} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{DAB1252D-577C-4912-98BE-1A812BF83F86} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{864FA09D-1E48-403A-A6C8-4F079D2A30F0} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{1154203C-7579-4525-906E-BC55268421C1} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
{A2B72833-5D70-4C42-AE85-E0319926FB8A} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
{4C2AD8AB-8AC0-46C4-80C6-C5577C7255F6} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{DA000953-7532-4DF5-8DB9-8143DF98D999} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{FCFE6024-2720-49B4-8257-9DBC6114F0F1} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{A353B17E-A940-4CE8-8BF9-179E24A9041F} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{F21E225B-190B-4DAA-8B0A-05986D231F56} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{3F8B8FC1-9FE4-4788-8991-367113E8D7AD} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
@ -1077,5 +987,11 @@ Global
{9879B5D5-2325-4A81-B4DF-F279FE8FEEB4} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{14ED4476-9F24-4776-8417-EA6927F6C9C9} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{73F095D2-D0BD-4D03-BC17-D7A5EF0C0191} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{364EC3C6-C9DB-45E0-A0F2-1EE61E4B429B} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{B18ADE62-35DE-4A06-8E1D-EDD6245F7F4D} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{AC9BE567-540E-4C70-90C2-AAF021307A80} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{DAB1252D-577C-4912-98BE-1A812BF83F86} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
{FCFE6024-2720-49B4-8257-9DBC6114F0F1} = {DAAE4C74-D06F-4874-A166-33305D2643CE}
EndGlobalSection
EndGlobal

Просмотреть файл

@ -3,10 +3,10 @@
using Microsoft.AspNet.Mvc;
namespace CustomRouteWebSite.Controllers.Canada
namespace CustomRouteSample.Web.Controllers.Canada
{
[Locale("en-CA")]
public class CustomRoute_ProductsController : Controller
public class ProductsController : Controller
{
public string Index()
{

Просмотреть файл

@ -3,11 +3,11 @@
using Microsoft.AspNet.Mvc;
namespace CustomRouteWebSite.Controllers
namespace CustomRouteSample.Web.Controllers
{
public class CustomRoute_OrdersControlller : Controller
public class OrdersControlller : Controller
{
[HttpGet("CustomRoute_Orders/{id}")]
[HttpGet("Orders/{id}")]
public string Index(int id)
{
return "Hello from " + RouteData.Values["locale"] + ".";

Просмотреть файл

@ -3,10 +3,10 @@
using Microsoft.AspNet.Mvc;
namespace CustomRouteWebSite.Controllers.Spain
namespace CustomRouteSample.Web.Controllers.Spain
{
[Locale("es-ES")]
public class CustomRoute_ProductsController : Controller
public class ProductsController : Controller
{
public string Index()
{

Просмотреть файл

@ -3,10 +3,10 @@
using Microsoft.AspNet.Mvc;
namespace CustomRouteWebSite.Controllers.US
namespace CustomRouteSample.Web.Controllers.US
{
[Locale("en-US")]
public class CustomRoute_ProductsController : Controller
public class ProductsController : Controller
{
public string Index()
{

Просмотреть файл

@ -7,8 +7,8 @@
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
<PropertyGroup Label="Globals">
<ProjectGuid>364ec3c6-c9db-45e0-a0f2-1ee61e4b429b</ProjectGuid>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
</PropertyGroup>
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>

Просмотреть файл

@ -3,7 +3,7 @@
using Microsoft.AspNet.Mvc.Infrastructure;
namespace CustomRouteWebSite
namespace CustomRouteSample.Web
{
public class LocaleAttribute : RouteConstraintAttribute
{

Просмотреть файл

@ -7,7 +7,7 @@ using System.Threading.Tasks;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Routing;
namespace CustomRouteWebSite
namespace CustomRouteSample.Web
{
public class LocalizedRoute : IRouter
{

Просмотреть файл

@ -4,7 +4,7 @@
using Microsoft.AspNet.Builder;
using Microsoft.Extensions.DependencyInjection;
namespace CustomRouteWebSite
namespace CustomRouteSample.Web
{
public class Startup
{
@ -16,8 +16,6 @@ namespace CustomRouteWebSite
public void Configure(IApplicationBuilder app)
{
app.UseCultureReplacer();
app.UseMvc(routes =>
{
routes.DefaultHandler = new LocalizedRoute(routes.DefaultHandler);

Просмотреть файл

@ -0,0 +1,15 @@
{
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"weblistener": "Microsoft.AspNet.Server.WebListener"
},
"dependencies": {
"Microsoft.AspNet.Mvc": "6.0.0-*",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-*",
"Microsoft.AspNet.Server.WebListener": "1.0.0-*"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
}

Просмотреть файл

@ -1,4 +1,4 @@
CustomRouteWebSite
CustomRouteSample.Web
===
This web site illustrates how a custom route injects route data based on the user.
This web site illustrates how a custom route injects route data based on a "User" header.

Просмотреть файл

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
</configuration>

Просмотреть файл

@ -3,10 +3,10 @@
using Microsoft.AspNet.Mvc;
namespace RazorEmbeddedViewsWebSite.Controllers
namespace EmbeddedViewSample.Web.Controllers
{
[Area("Restricted")]
public class RazorEmbeddedViews_AdminController : Controller
public class AdminController : Controller
{
public IActionResult Login()
{

Просмотреть файл

@ -3,13 +3,19 @@
using Microsoft.AspNet.Mvc;
namespace LoggingWebSite.Controllers
namespace EmbeddedViewSample.Web
{
public class HomeController : Controller
{
// Interactive home page.
public IActionResult Index()
{
return View();
}
public IActionResult EchoActionUrl()
{
return View();
}
}
}

Просмотреть файл

@ -0,0 +1,13 @@
<html>
<head><title>Home page</title></head>
<body>
<ul>
<li>@Html.ActionLink(
linkText: "Administrator login",
actionName: "Login",
controllerName: "Admin",
routeValues: new { area = "Restricted" })</li>
<li>@Html.ActionLink(linkText: "Echo action", actionName: "EchoActionUrl")</li>
</ul>
</body>
</html>

Просмотреть файл

@ -7,8 +7,8 @@
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
<PropertyGroup Label="Globals">
<ProjectGuid>b18ade62-35de-4a06-8e1d-edd6245f7f4d</ProjectGuid>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
</PropertyGroup>
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>

Просмотреть файл

@ -7,7 +7,7 @@ using Microsoft.AspNet.FileProviders;
using Microsoft.AspNet.Mvc.Razor;
using Microsoft.Extensions.DependencyInjection;
namespace RazorEmbeddedViewsWebSite
namespace EmbeddedViewSample.Web
{
public class Startup
{
@ -19,18 +19,20 @@ namespace RazorEmbeddedViewsWebSite
services.Configure<RazorViewEngineOptions>(options =>
{
options.FileProvider = new EmbeddedFileProvider(GetType().GetTypeInfo().Assembly, "RazorEmbeddedViewsWebSite.EmbeddedResources");
// Base namespace matches the resources added to the assembly from the EmbeddedResources folder.
options.FileProvider = new EmbeddedFileProvider(
GetType().GetTypeInfo().Assembly,
baseNamespace: "EmbeddedViewSample.Web.EmbeddedResources");
});
}
public void Configure(IApplicationBuilder app)
{
app.UseCultureReplacer();
app.UseMvc(routes =>
{
routes.MapRoute("areaRoute", "{area:exists}/{controller}/{action}");
routes.MapRoute("default",
routes.MapRoute(
"default",
"{controller}/{action}/{id?}",
new { controller = "Home", action = "Index" });
});

Просмотреть файл

@ -0,0 +1,17 @@
{
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"weblistener": "Microsoft.AspNet.Server.WebListener"
},
"resource": "EmbeddedResources/**",
"dependencies": {
"Microsoft.AspNet.FileProviders.Embedded": "1.0.0-*",
"Microsoft.AspNet.Mvc": "6.0.0-*",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-*",
"Microsoft.AspNet.Server.WebListener": "1.0.0-*"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
}

Просмотреть файл

@ -1,4 +1,4 @@
RazorEmbeddedViewsWebSite
EmbeddedViewSample.Web
===
This web site illustrates use cases for `RazorViewEngineOptions.FileProvider`.

Просмотреть файл

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
</configuration>

Просмотреть файл

@ -3,17 +3,20 @@
using Microsoft.AspNet.Mvc;
namespace FormatFilterWebSite
namespace FormatFilterSample.Web
{
[FormatFilter]
public class FormatFilterController : Controller
{
[Route("[controller]/[action]/{id}.{format?}")]
[Route("[controller]/[action].{format}")]
public Product GetProduct(int id = 0)
{
return new Product() { SampleInt = id };
}
[Produces("application/custom", "application/json", "text/json")]
[Route("[controller]/[action]/{id}.{format}")]
public Product ProducesMethod(int id)
{
return new Product() { SampleInt = id };

Просмотреть файл

@ -3,12 +3,13 @@
using Microsoft.AspNet.Mvc;
namespace FormatFilterWebSite
namespace FormatFilterSample.Web
{
[Produces("application/custom_ProducesController")]
[Produces("application/controller")]
[Route("[controller]/[action]")]
public class ProducesOverrideController
{
[Produces("application/ProducesMethod")]
[Produces("application/custom")]
public string ReturnClassName()
{
return "ProducesOverrideController";

Просмотреть файл

@ -7,12 +7,10 @@ using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc.Formatters;
using Microsoft.Net.Http.Headers;
namespace FormatFilterWebSite
namespace FormatFilterSample.Web
{
public class CustomFormatter : OutputFormatter
{
public string ContentType { get; private set; }
public CustomFormatter(string contentType)
{
ContentType = contentType;
@ -20,16 +18,23 @@ namespace FormatFilterWebSite
SupportedEncodings.Add(Encoding.GetEncoding("utf-8"));
}
public string ContentType { get; }
public override bool CanWriteResult(OutputFormatterCanWriteContext context)
{
if (base.CanWriteResult(context))
{
var actionReturn = context.Object as Product;
if (actionReturn != null)
if (context.Object is Product)
{
return true;
}
if (context.Object is string)
{
return true;
}
}
return false;
}

Просмотреть файл

@ -7,8 +7,8 @@
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
<PropertyGroup Label="Globals">
<ProjectGuid>ac9be567-540e-4c70-90c2-aaf021307a80</ProjectGuid>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
</PropertyGroup>
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>

Просмотреть файл

@ -0,0 +1,15 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace FormatFilterSample.Web
{
public class Product
{
public int SampleInt { get; set; }
public override string ToString()
{
return "SampleInt:" + SampleInt;
}
}
}

Просмотреть файл

@ -3,11 +3,11 @@
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Routing;
using Microsoft.AspNet.Mvc.Formatters;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Net.Http.Headers;
namespace FormatFilterWebSite
namespace FormatFilterSample.Web
{
public class Startup
{
@ -21,6 +21,7 @@ namespace FormatFilterWebSite
var customFormatter = new CustomFormatter("application/custom");
options.OutputFormatters.Add(customFormatter);
options.OutputFormatters.RemoveType<StringOutputFormatter>();
options.FormatterMappings.SetMediaTypeMappingForFormat(
"custom",
@ -30,18 +31,7 @@ namespace FormatFilterWebSite
public void Configure(IApplicationBuilder app)
{
app.UseCultureReplacer();
app.UseMvc(routes =>
{
routes.MapRoute("formatroute",
"{controller}/{action}/{id}.{format?}",
new { controller = "Home", action = "Index" });
routes.MapRoute("optionalroute",
"{controller}/{action}.{format?}",
new { controller = "Home", action = "Index" });
});
app.UseMvc();
}
}
}

Просмотреть файл

@ -0,0 +1,15 @@
{
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"weblistener": "Microsoft.AspNet.Server.WebListener"
},
"dependencies": {
"Microsoft.AspNet.Mvc": "6.0.0-*",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-*",
"Microsoft.AspNet.Server.WebListener": "1.0.0-*"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
}

Просмотреть файл

@ -0,0 +1,5 @@
FormatFilterSample.Web
===
This web site illustrates in depth the process of using new feature URL Media header mappings. It demonstrates adding
URL formats and content type mappings and using them. It also shows how routes need to change for this feature to work.

Просмотреть файл

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
</configuration>

Просмотреть файл

@ -4,11 +4,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Routing;
namespace InlineConstraintsWebSite.Constraints
namespace InlineConstraintSample.Web.Constraints
{
public class IsbnDigitScheme10Constraint : IRouteConstraint
{

Просмотреть файл

@ -7,7 +7,7 @@ using System.Linq;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Routing;
namespace InlineConstraintsWebSite.Constraints
namespace InlineConstraintSample.Web.Constraints
{
public class IsbnDigitScheme13Constraint : IRouteConstraint
{

Просмотреть файл

@ -3,10 +3,13 @@
using Microsoft.AspNet.Mvc;
namespace InlineConstraints.Controllers
namespace InlineConstraintSample.Web.Controllers
{
public class HomeController : Controller
{
[Route("")]
[Route("[controller]")]
[Route("[controller]/[action]")]
public IActionResult Index()
{
return View();

Просмотреть файл

@ -0,0 +1,16 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNet.Mvc;
namespace InlineConstraintSample.Web.Controllers
{
public class Isbn10Controller : Controller
{
[Route("book/[action]/{isbnNumber:IsbnDigitScheme10(true)}")]
public string Index(string isbnNumber)
{
return "10 Digit ISBN Number " + isbnNumber;
}
}
}

Просмотреть файл

@ -0,0 +1,17 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNet.Mvc;
namespace InlineConstraintSample.Web.Controllers
{
[Route("book/[action]")]
public class Isbn13Controller : Controller
{
[HttpGet("{isbnNumber:IsbnDigitScheme13}")]
public string Index(string isbnNumber)
{
return "13 Digit ISBN Number " + isbnNumber;
}
}
}

Просмотреть файл

@ -1,15 +1,15 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNet.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNet.Mvc;
namespace InlineConstraintsWebSite.Controllers
namespace InlineConstraintSample.Web.Controllers
{
[Route("products/[action]")]
public class InlineConstraints_ProductsController : Controller
public class ProductsController : Controller
{
public IDictionary<string, object> Index()
{

Просмотреть файл

@ -1,19 +1,21 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNet.Mvc;
using System;
using System.Collections.Generic;
using Microsoft.AspNet.Mvc;
namespace InlineConstraintsWebSite.Controllers
namespace InlineConstraintSample.Web.Controllers
{
public class InlineConstraints_StoreController : Controller
public class StoreController : Controller
{
[Route("store/[action]/{id:guid?}")]
public IDictionary<string, object> GetStoreById(Guid id)
{
return RouteData.Values;
}
[Route("store/[action]/{location:alpha:minlength(3):maxlength(10)}")]
public IDictionary<string, object> GetStoreByLocation(string location)
{
return RouteData.Values;

Просмотреть файл

@ -3,10 +3,11 @@
using Microsoft.AspNet.Mvc;
namespace InlineConstraints.Controllers
namespace InlineConstraintSample.Web.Controllers
{
public class UsersController : Controller
{
[Route("constant-prefix/[controller]")]
public IActionResult Index()
{
return Content("Users.Index");

Просмотреть файл

@ -7,8 +7,8 @@
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
<PropertyGroup Label="Globals">
<ProjectGuid>ea34877f-1ac1-42b7-b4e6-15a093f40cae</ProjectGuid>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
</PropertyGroup>
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>

Просмотреть файл

@ -0,0 +1,50 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using InlineConstraintSample.Web.Constraints;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Localization;
using Microsoft.Extensions.DependencyInjection;
namespace InlineConstraintSample.Web
{
public class Startup
{
// Set up application services
public void ConfigureServices(IServiceCollection services)
{
services.ConfigureRouting(
routeOptions => routeOptions.ConstraintMap.Add(
"IsbnDigitScheme10",
typeof(IsbnDigitScheme10Constraint)));
services.ConfigureRouting(
routeOptions => routeOptions.ConstraintMap.Add(
"IsbnDigitScheme13",
typeof(IsbnDigitScheme10Constraint)));
// Update an existing constraint from ConstraintMap for test purpose.
services.ConfigureRouting(
routeOptions =>
{
if (routeOptions.ConstraintMap.ContainsKey("IsbnDigitScheme13"))
{
routeOptions.ConstraintMap["IsbnDigitScheme13"] = typeof(IsbnDigitScheme13Constraint);
}
});
// Add MVC services to the services container
services.AddMvc();
}
public void Configure(IApplicationBuilder app)
{
// Ignore ambient and client locale. Use same values as ReplaceCultureAttribute / CultureReplacerMiddleware.
var localizationOptions = new RequestLocalizationOptions();
localizationOptions.RequestCultureProviders.Clear();
app.UseRequestLocalization(localizationOptions, new RequestCulture("en-GB", "en-US"));
app.UseMvc();
}
}
}

Просмотреть файл

@ -0,0 +1,15 @@
{
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"weblistener": "Microsoft.AspNet.Server.WebListener"
},
"dependencies": {
"Microsoft.AspNet.Mvc": "6.0.0-*",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-*",
"Microsoft.AspNet.Server.WebListener": "1.0.0-*"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
}

Просмотреть файл

@ -1,4 +1,4 @@
InlineConstraintsWebSite
InlineConstraintSample.Web
===
This web site illustrates how to use inline route constraints with traditional

Просмотреть файл

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
</configuration>

Просмотреть файл

@ -2,14 +2,14 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using JsonPatchWebSite.Models;
using JsonPatchSample.Web.Models;
using Microsoft.AspNet.JsonPatch;
using Microsoft.AspNet.Mvc;
namespace JsonPatchWebSite.Controllers
namespace JsonPatchSample.Web.Controllers
{
[Route("jsonpatch/[action]")]
public class JsonPatchController : Controller
public class HomeController : Controller
{
[HttpPatch]
public IActionResult JsonPatchWithModelState([FromBody] JsonPatchDocument<Customer> patchDoc)

Просмотреть файл

@ -7,8 +7,8 @@
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
<PropertyGroup Label="Globals">
<ProjectGuid>dab1252d-577c-4912-98be-1a812bf83f86</ProjectGuid>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
</PropertyGroup>
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>

Просмотреть файл

@ -3,15 +3,8 @@
using Newtonsoft.Json;
namespace JsonPatchWebSite.Models
namespace JsonPatchSample.Web.Models
{
public class Product
{
public string ProductName { get; set; }
public Category ProductCategory { get; set; }
}
[JsonConverter(typeof(ProductCategoryConverter))]
public class Category
{

Просмотреть файл

@ -3,7 +3,7 @@
using System.Collections.Generic;
namespace JsonPatchWebSite.Models
namespace JsonPatchSample.Web.Models
{
public class Customer
{

Просмотреть файл

@ -3,7 +3,7 @@
using Newtonsoft.Json;
namespace JsonPatchWebSite.Models
namespace JsonPatchSample.Web.Models
{
public class Order
{

Просмотреть файл

@ -1,10 +1,12 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace ModelBindingWebSite.Models
namespace JsonPatchSample.Web.Models
{
public class ArrayOfPersonWithNoProperties
public class Product
{
public PersonWithNoProperties[] people { get; set; }
public string ProductName { get; set; }
public Category ProductCategory { get; set; }
}
}

Просмотреть файл

@ -3,11 +3,11 @@
using System;
using System.Reflection;
using JsonPatchWebSite.Models;
using JsonPatchSample.Web.Models;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace JsonPatchWebSite
namespace JsonPatchSample.Web
{
public class ProductCategoryConverter : JsonConverter
{

Просмотреть файл

@ -4,7 +4,7 @@
using System;
using Newtonsoft.Json;
namespace JsonPatchWebSite
namespace JsonPatchSample.Web
{
public class ReplaceOrderTypeConverter : JsonConverter
{

Просмотреть файл

@ -4,7 +4,7 @@
using Microsoft.AspNet.Builder;
using Microsoft.Extensions.DependencyInjection;
namespace JsonPatchWebSite
namespace JsonPatchSample.Web
{
public class Startup
{
@ -17,8 +17,6 @@ namespace JsonPatchWebSite
public void Configure(IApplicationBuilder app)
{
app.UseCultureReplacer();
// Add MVC to the request pipeline
app.UseMvc();
}

Просмотреть файл

@ -0,0 +1,15 @@
{
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"weblistener": "Microsoft.AspNet.Server.WebListener"
},
"dependencies": {
"Microsoft.AspNet.Mvc": "6.0.0-*",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-*",
"Microsoft.AspNet.Server.WebListener": "1.0.0-*"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
}

Просмотреть файл

@ -1,4 +1,4 @@
JsonPatchWebSite
JsonPatchSample.Web
===
This web site illustrates how to use JSON Patch operation on an object.

Просмотреть файл

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
</configuration>

Просмотреть файл

@ -1,11 +1,11 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using LocalizationWebSite.Models;
using LocalizationSample.Web.Models;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.Localization;
namespace LocalizationWebSite.Controllers
namespace LocalizationSample.Web.Controllers
{
public class HomeController : Controller
{

Просмотреть файл

@ -7,8 +7,8 @@
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
<PropertyGroup Label="Globals">
<ProjectGuid>fcfe6024-2720-49b4-8257-9dbc6114f0f1</ProjectGuid>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
</PropertyGroup>
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>

Просмотреть файл

@ -0,0 +1,13 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.ComponentModel.DataAnnotations;
namespace LocalizationSample.Web.Models
{
public class Product
{
[Required(ErrorMessage = "ProductName")]
public string ProductName { get; set; }
}
}

Просмотреть файл

@ -3,7 +3,7 @@
using System.ComponentModel.DataAnnotations;
namespace LocalizationWebSite.Models
namespace LocalizationSample.Web.Models
{
public class User
{
@ -12,10 +12,4 @@ namespace LocalizationWebSite.Models
public Product Product { get; set; }
}
public class Product
{
[Required(ErrorMessage = "ProductName")]
public string ProductName { get; set; }
}
}

Просмотреть файл

@ -7,7 +7,7 @@ using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Localization;
using Microsoft.Extensions.DependencyInjection;
namespace LocalizationWebSite
namespace LocalizationSample.Web
{
public class Startup
{
@ -21,8 +21,6 @@ namespace LocalizationWebSite
public void Configure(IApplicationBuilder app)
{
app.UseCultureReplacer();
var options = new RequestLocalizationOptions
{
SupportedCultures = new List<CultureInfo>

Просмотреть файл

@ -1,4 +1,4 @@
@model LocalizationWebSite.Models.User
@model LocalizationSample.Web.Models.User
@Html.ValidationMessage("Name")
@Html.ValidationMessage("Product.ProductName")

Просмотреть файл

@ -1,5 +1,5 @@
@using LocalizationWebSite
@using Microsoft.Extensions.Localization
@using LocalizationSample.Web
@using Microsoft.AspNet.Mvc.Localization
@using Microsoft.Extensions.Localization
@inject IViewLocalizer LocString

Просмотреть файл

@ -0,0 +1,15 @@
{
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"weblistener": "Microsoft.AspNet.Server.WebListener"
},
"dependencies": {
"Microsoft.AspNet.Mvc": "6.0.0-*",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-*",
"Microsoft.AspNet.Server.WebListener": "1.0.0-*"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
}

Просмотреть файл

@ -0,0 +1,4 @@
LocalizationSample.Web
===
This web site illustrates use cases for MVC localization.

Просмотреть файл

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
</configuration>

Просмотреть файл

@ -1,315 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public class ActionResultTests : IClassFixture<MvcTestFixture<ActionResultsWebSite.Startup>>
{
public ActionResultTests(MvcTestFixture<ActionResultsWebSite.Startup> fixture)
{
Client = fixture.Client;
}
public HttpClient Client { get; }
[Fact]
public async Task BadRequestResult_CanBeReturned()
{
// Arrange
var input = "{\"SampleInt\":10}";
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetBadResult");
request.Content = new StringContent(input, Encoding.UTF8, "application/json");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
Assert.Equal("", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task CreatedResult_SetsRelativePathInLocationHeader()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetCreatedRelative");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
Assert.Equal("1", response.Headers.Location.OriginalString);
Assert.Equal("{\"SampleInt\":10,\"SampleString\":\"Foo\"}", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task CreatedResult_SetsAbsolutePathInLocationHeader()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetCreatedAbsolute");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
Assert.Equal("/ActionResultsVerification/GetDummy/1", response.Headers.Location.OriginalString);
Assert.Equal("{\"SampleInt\":10,\"SampleString\":\"Foo\"}", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task CreatedResult_SetsQualifiedPathInLocationHeader()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetCreatedQualified");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
Assert.Equal(
"http://localhost/ActionResultsVerification/GetDummy/1",
response.Headers.Location.OriginalString);
Assert.Equal("{\"SampleInt\":10,\"SampleString\":\"Foo\"}", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task CreatedResult_SetsUriInLocationHeader()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetCreatedUri");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
Assert.Equal("/ActionResultsVerification/GetDummy/1", response.Headers.Location.OriginalString);
Assert.Equal("{\"SampleInt\":10,\"SampleString\":\"Foo\"}", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task CreatedAtActionResult_GeneratesUri_WithActionAndController()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetCreatedAtAction");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
Assert.Equal("http://localhost/ActionResultsVerification/GetDummy/1", response.Headers.Location.OriginalString);
Assert.Equal("{\"SampleInt\":10,\"SampleString\":\"Foo\"}", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task CreatedAtRouteResult_GeneratesUri_WithRouteValues()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetCreatedAtRoute");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
Assert.Equal("http://localhost/ActionResultsVerification/GetDummy/1", response.Headers.Location.OriginalString);
Assert.Equal("{\"SampleInt\":10,\"SampleString\":\"Foo\"}", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task CreatedAtRouteResult_GeneratesUri_WithRouteName()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetCreatedAtRouteWithRouteName");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
Assert.Equal("http://localhost/foo/ActionResultsVerification/GetDummy/1", response.Headers.Location.OriginalString);
Assert.Equal("{\"SampleInt\":10,\"SampleString\":\"Foo\"}", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task SerializableError_CanSerializeNormalObjects()
{
// Arrange
var input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<DummyClass xmlns=\"http://schemas.datacontract.org/2004/07/ActionResultsWebSite\">" +
"<SampleInt>2</SampleInt><SampleString>foo</SampleString></DummyClass>";
var request = new HttpRequestMessage(HttpMethod.Post, "Home/GetCustomErrorObject");
request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json"));
request.Content = new StringContent(input, Encoding.UTF8, "application/xml");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
Assert.Equal("[\"Something went wrong with the model.\"]",
await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task ContentResult_WritesContent_SetsDefaultContentTypeAndEncoding()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetContentResult");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("content", await response.Content.ReadAsStringAsync());
Assert.Equal("text/plain", response.Content.Headers.ContentType.MediaType);
Assert.Equal("utf-8", response.Content.Headers.ContentType.CharSet);
}
[Fact]
public async Task ContentResult_WritesContent_SetsContentType_UsesDefaultEncoding_AndNoCharset()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetContentResultWithContentType");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("application/json", response.Content.Headers.ContentType.MediaType);
Assert.Equal("content", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task ContentResult_WritesContent_SetsContentTypeAndEncoding()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetContentResultWithContentTypeAndEncoding");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("application/json", response.Content.Headers.ContentType.MediaType);
Assert.Equal("us-ascii", response.Content.Headers.ContentType.CharSet);
Assert.Equal("content", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task ObjectResult_WithStatusCodeAndNoContent_SetsSameStatusCode()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Get,
"ActionResultsVerification/GetObjectResultWithNoContent");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
}
[Fact]
public async Task HttpNotFoundObjectResult_NoResponseContent()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Get,
"ActionResultsVerification/GetNotFoundObjectResult");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
Assert.Equal("", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task HttpNotFoundObjectResult_WithResponseContent()
{
// Arrange
var request = new HttpRequestMessage(
HttpMethod.Post,
"ActionResultsVerification/GetNotFoundObjectResultWithContent");
// Act
var response = await Client.SendAsync(request);
// Assert
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
Assert.Equal("{\"SampleInt\":10,\"SampleString\":\"Foo\"}", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task HttpNotFoundObjectResult_WithDisposableObject()
{
// Arrange
var nameValueCollection = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("guid", Guid.NewGuid().ToString()),
};
// Act
var response1 = await Client.PostAsync(
"/ActionResultsVerification/GetDisposeCalled",
new FormUrlEncodedContent(nameValueCollection));
await Client.PostAsync(
"/ActionResultsVerification/GetNotFoundObjectResultWithDisposableObject",
new FormUrlEncodedContent(nameValueCollection));
var response2 = await Client.PostAsync(
"/ActionResultsVerification/GetDisposeCalled",
new FormUrlEncodedContent(nameValueCollection));
// Assert
var isDisposed = Convert.ToBoolean(await response1.Content.ReadAsStringAsync());
Assert.False(isDisposed);
isDisposed = Convert.ToBoolean(await response2.Content.ReadAsStringAsync());
Assert.True(isDisposed);
}
}
}

Просмотреть файл

@ -1,156 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public class ActivatorTests : IClassFixture<MvcTestFixture<ActivatorWebSite.Startup>>
{
public ActivatorTests(MvcTestFixture<ActivatorWebSite.Startup> fixture)
{
Client = fixture.Client;
}
public HttpClient Client { get; }
[Fact]
public async Task ControllerThatCannotBeActivated_ThrowsWhenAttemptedToBeInvoked()
{
// Arrange
var expectedMessage =
"Unable to resolve service for type 'ActivatorWebSite.CannotBeActivatedController+FakeType' while " +
"attempting to activate 'ActivatorWebSite.CannotBeActivatedController'.";
// Act & Assert
var response = await Client.GetAsync("CannotBeActivated/Index");
var exception = response.GetServerException();
Assert.Equal(typeof(InvalidOperationException).FullName, exception.ExceptionType);
Assert.Equal(expectedMessage, exception.ExceptionMessage);
}
[Fact]
public async Task PropertiesForPocoControllersAreInitialized()
{
// Arrange
var expected = "4|some-text";
// Act
var response = await Client.GetAsync("Plain?foo=some-text");
// Assert
var headerValue = Assert.Single(response.Headers.GetValues("X-Fake-Header"));
Assert.Equal("Fake-Value", headerValue);
var body = await response.Content.ReadAsStringAsync();
Assert.Equal(expected, body);
}
[Fact]
public async Task PropertiesForTypesDerivingFromControllerAreInitialized()
{
// Arrange
var expected = "Hello world";
// Act
var body = await Client.GetStringAsync("Regular");
// Assert
Assert.Equal(expected, body);
}
[Fact]
public async Task ViewActivator_ActivatesDefaultInjectedProperties()
{
// Arrange
var expected = @"<label for=""Hello"">Hello</label> world! /View/ConsumeServicesFromBaseType";
// Act
var body = await Client.GetStringAsync("View/ConsumeDefaultProperties");
// Assert
Assert.Equal(expected, body.Trim());
}
[Fact]
public async Task ViewActivator_ActivatesAndContextualizesInjectedServices()
{
// Arrange
var expected = "4 test-value";
// Act
var body = await Client.GetStringAsync("View/ConsumeInjectedService?test=test-value");
// Assert
Assert.Equal(expected, body.Trim());
}
[Fact]
public async Task ViewActivator_ActivatesServicesFromBaseType()
{
// Arrange
var expected = @"/content/scripts/test.js";
// Act
var body = await Client.GetStringAsync("View/ConsumeServicesFromBaseType");
// Assert
Assert.Equal(expected, body.Trim());
}
[Fact]
public async Task ViewComponentActivator_Activates()
{
// Arrange
var expected = @"Random Number:4";
// Act
var body = await Client.GetStringAsync("View/ConsumeViewComponent");
// Assert
Assert.Equal(expected, body.Trim());
}
[Fact]
public async Task ViewComponentThatCannotBeActivated_ThrowsWhenAttemptedToBeInvoked()
{
// Arrange
var expectedMessage =
"Unable to resolve service for type 'ActivatorWebSite.CannotBeActivatedComponent+FakeType' " +
"while attempting to activate 'ActivatorWebSite.CannotBeActivatedComponent'.";
// Act & Assert
var response = await Client.GetAsync("View/ConsumeCannotBeActivatedComponent");
var exception = response.GetServerException();
Assert.Equal(typeof(InvalidOperationException).FullName, exception.ExceptionType);
Assert.Equal(expectedMessage, exception.ExceptionMessage);
}
[Fact]
public async Task TagHelperActivation_ConstructorInjection_RendersProperly()
{
// Arrange
var expected = "<body><h2>Activation Test</h2>" +
Environment.NewLine +
"<div>FakeFakeFake</div>" +
Environment.NewLine +
"<span>" +
"<input id=\"foo\" name=\"foo\" type=\"hidden\" value=\"test content\" />" +
"</span>" +
Environment.NewLine +
"<footer>Footer from activated ViewData</footer>" +
"</body>";
// Act
var body = await Client.GetStringAsync("View/UseTagHelper");
// Assert
Assert.Equal(expected, body.Trim(), ignoreLineEndingDifferences: true);
}
}
}

Просмотреть файл

@ -99,7 +99,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
public async Task ApplicationModelExtensions_AddsConventionToAllControllers()
{
// Arrange & Act
var response = await Client.GetAsync("http://localhost/Lisence/GetLisence");
var response = await Client.GetAsync("http://localhost/License/GetLicense");
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);

Просмотреть файл

@ -1,90 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public class ControllerDiscoveryConventionTests :
IClassFixture<MvcTestFixture<ControllerDiscoveryConventionsWebSite.Startup>>,
IClassFixture<FilteredDefaultAssemblyProviderFixture<ControllerDiscoveryConventionsWebSite.Startup>>
{
public ControllerDiscoveryConventionTests(
MvcTestFixture<ControllerDiscoveryConventionsWebSite.Startup> fixture,
FilteredDefaultAssemblyProviderFixture<ControllerDiscoveryConventionsWebSite.Startup> filteredFixture)
{
Client = fixture.Client;
FilteredClient = filteredFixture.Client;
}
public HttpClient Client { get; }
public HttpClient FilteredClient { get; }
[Fact]
public async Task AbstractControllers_AreSkipped()
{
// Arrange & Act
var response = await Client.GetAsync("Abstract/GetValue");
// Assert
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
}
[Fact]
public async Task TypesDerivingFromControllerBaseTypesThatDoNotReferenceMvc_AreSkipped()
{
// Arrange & Act
var response = await Client.GetAsync("SqlTransactionManager/GetValue");
// Assert
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
}
[Fact]
public async Task TypesMarkedWithNonController_AreSkipped()
{
// Arrange & Act
var response = await Client.GetAsync("NonController/GetValue");
// Assert
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
}
[Fact]
public async Task PocoTypesWithControllerSuffix_AreDiscovered()
{
// Arrange & Act
var response = await Client.GetAsync("Poco/GetValue");
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("PocoController", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task TypesDerivingFromTypesWithControllerSuffix_AreDiscovered()
{
// Arrange & Act
var response = await Client.GetAsync("ChildOfAbstract/GetValue");
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("AbstractController", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task TypesDerivingFromApiController_AreDiscovered()
{
// Arrange & Act
var response = await FilteredClient.GetAsync("PersonApi/GetValue");
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("PersonApi", await response.Content.ReadAsStringAsync());
}
}
}

Просмотреть файл

@ -8,9 +8,9 @@ using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public class CustomRouteTest : IClassFixture<MvcTestFixture<CustomRouteWebSite.Startup>>
public class CustomRouteSampleTest : IClassFixture<MvcTestFixture<CustomRouteSample.Web.Startup>>
{
public CustomRouteTest(MvcTestFixture<CustomRouteWebSite.Startup> fixture)
public CustomRouteSampleTest(MvcTestFixture<CustomRouteSample.Web.Startup> fixture)
{
Client = fixture.Client;
}
@ -24,7 +24,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
public async Task RouteToLocale_ConventionalRoute_BasedOnUser(string user, string expected)
{
// Arrange
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/CustomRoute_Products/Index");
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/Products/Index");
request.Headers.Add("User", user);
// Act
@ -43,7 +43,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
public async Task RouteWithAttributeRoute_IncludesLocale_BasedOnUser(string user, string expected)
{
// Arrange
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/CustomRoute_Orders/5");
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/Orders/5");
request.Headers.Add("User", user);
// Act

Просмотреть файл

@ -7,11 +7,9 @@ using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
// The EmbeddedFileSystem used by RazorEmbeddedViewsWebSite performs case sensitive lookups for files.
// These tests verify that we correctly normalize route values when constructing view lookup paths.
public class RazorFileSystemCaseSensitivityTest : IClassFixture<MvcTestFixture<RazorEmbeddedViewsWebSite.Startup>>
public class EmbeddedViewSampleTest : IClassFixture<MvcTestFixture<EmbeddedViewSample.Web.Startup>>
{
public RazorFileSystemCaseSensitivityTest(MvcTestFixture<RazorEmbeddedViewsWebSite.Startup> fixture)
public EmbeddedViewSampleTest(MvcTestFixture<EmbeddedViewSample.Web.Startup> fixture)
{
Client = fixture.Client;
}
@ -19,13 +17,27 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
public HttpClient Client { get; }
[Fact]
public async Task RazorViewEngine_NormalizesActionName_WhenLookingUpViewPaths()
public async Task RazorViewEngine_UsesFileProviderOnViewEngineOptionsToLocateViews()
{
// Arrange
var expectedMessage = "Hello test-user, this is /RazorEmbeddedViews_Home";
var expectedMessage = "Hello test-user, this is /Home/EchoActionUrl";
// Act
var response = await Client.GetStringAsync("http://localhost/RazorEmbeddedViews_Home/index?User=test-user");
var response = await Client.GetStringAsync("http://localhost/Home/EchoActionUrl?User=test-user");
// Assert
Assert.Equal(expectedMessage, response);
}
[Fact]
public async Task RazorViewEngine_UsesFileProviderOnViewEngineOptionsToLocateAreaViews()
{
// Arrange
var expectedMessage = "Hello admin-user, this is /Restricted/Admin/Login";
var target = "http://localhost/Restricted/Admin/Login?AdminUser=admin-user";
// Act
var response = await Client.GetStringAsync(target);
// Assert
Assert.Equal(expectedMessage, response);
@ -35,10 +47,10 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
public async Task RazorViewEngine_NormalizesControllerRouteValue_WhenLookingUpViewPaths()
{
// Arrange
var expectedMessage = "Hello test-user, this is /razorembeddedviews_home";
var expectedMessage = "Hello test-user, this is /home/echoactionurl";
// Act
var response = await Client.GetStringAsync("http://localhost/razorembeddedviews_home?User=test-user");
var response = await Client.GetStringAsync("http://localhost/home/echoactionurl?User=test-user");
// Assert
Assert.Equal(expectedMessage, response);
@ -48,8 +60,8 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
public async Task RazorViewEngine_NormalizesAreaRouteValue_WhenLookupViewPaths()
{
// Arrange
var expectedMessage = "Hello admin-user, this is /restricted/razorembeddedviews_admin/login";
var target = "http://localhost/restricted/razorembeddedviews_admin/login?AdminUser=admin-user";
var expectedMessage = "Hello admin-user, this is /restricted/admin/login";
var target = "http://localhost/restricted/admin/login?AdminUser=admin-user";
// Act
var response = await Client.GetStringAsync(target);

Просмотреть файл

@ -1,41 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNet.Mvc.Infrastructure;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.PlatformAbstractions;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public class FilteredDefaultAssemblyProviderFixture<TStartup> : MvcTestFixture<TStartup>
where TStartup : new()
{
protected override void AddAdditionalServices(IServiceCollection services)
{
// MvcTestFixture<TStartup> normally replaces the DefaultAssemblyProvider with an IAssemblyProvider
// implementation that limits the set of candidate assemblies to the executing application. Switch it back
// to using a filtered default assembly provider.
services.AddTransient<IAssemblyProvider, FilteredDefaultAssemblyProvider>();
}
private class FilteredDefaultAssemblyProvider : DefaultAssemblyProvider
{
public FilteredDefaultAssemblyProvider(ILibraryManager libraryManager)
: base(libraryManager)
{
}
protected override IEnumerable<Library> GetCandidateLibraries()
{
var libraries = base.GetCandidateLibraries();
// Filter out other WebSite projects
return libraries.Where(library => !library.Name.Contains("WebSite") ||
library.Name.Equals(nameof(ControllerDiscoveryConventionsWebSite), StringComparison.Ordinal));
}
}
}
}

Просмотреть файл

@ -8,9 +8,9 @@ using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public class FormatFilterTest : IClassFixture<MvcTestFixture<FormatFilterWebSite.Startup>>
public class FormatFilterSampleTest : IClassFixture<MvcTestFixture<FormatFilterSample.Web.Startup>>
{
public FormatFilterTest(MvcTestFixture<FormatFilterWebSite.Startup> fixture)
public FormatFilterSampleTest(MvcTestFixture<FormatFilterSample.Web.Startup> fixture)
{
Client = fixture.Client;
}
@ -112,6 +112,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal(@"ProducesOverrideController", await response.Content.ReadAsStringAsync());
Assert.Equal("application/custom", response.Content.Headers.ContentType.MediaType);
}
}
}

Просмотреть файл

@ -11,9 +11,9 @@ using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public class InlineConstraintTests : IClassFixture<MvcTestFixture<InlineConstraints.Startup>>
public class InlineConstraintSampleTest : IClassFixture<MvcTestFixture<InlineConstraintSample.Web.Startup>>
{
public InlineConstraintTests(MvcTestFixture<InlineConstraints.Startup> fixture)
public InlineConstraintSampleTest(MvcTestFixture<InlineConstraintSample.Web.Startup> fixture)
{
Client = fixture.Client;
}
@ -24,7 +24,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
public async Task RoutingToANonExistantArea_WithExistConstraint_RoutesToCorrectAction()
{
// Arrange & Act
var response = await Client.GetAsync("http://localhost/area-exists/Users");
var response = await Client.GetAsync("http://localhost/constant-prefix/Users");
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
@ -32,24 +32,6 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.Equal("Users.Index", returnValue);
}
[Fact]
public async Task RoutingToANonExistantArea_WithoutExistConstraint_RoutesToIncorrectAction()
{
// Arrange & Act
var response = await Client.GetAsync("http://localhost/area-withoutexists/Users");
// Assert
var exception = response.GetServerException();
// Mono issue - https://github.com/aspnet/External/issues/19
Assert.Equal(
"The view 'Index' was not found." +
" The following locations were searched:" + PlatformNormalizer.GetNewLinesAsUnderscores(1) +
"/Areas/Users/Views/Home/Index.cshtml" + PlatformNormalizer.GetNewLinesAsUnderscores(1) +
"/Areas/Users/Views/Shared/Index.cshtml" + PlatformNormalizer.GetNewLinesAsUnderscores(1) +
"/Views/Shared/Index.cshtml",
exception.ExceptionMessage);
}
[Fact]
public async Task GetProductById_IntConstraintForOptionalId_IdPresent()
{
@ -61,7 +43,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
var result = await GetResponseValues(response);
Assert.Equal(result["id"], "5");
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductById");
}
@ -74,7 +56,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductById");
}
@ -98,7 +80,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["name"], "asdf");
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductByName");
}
@ -134,7 +116,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
var result = await GetResponseValues(response);
Assert.Equal(result["dateTime"], new DateTime(2014, 10, 11, 13, 45, 30));
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductByManufacturingDate");
}
@ -148,7 +130,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["name"], "Sports");
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductByCategoryName");
}
@ -172,7 +154,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductByCategoryName");
}
@ -186,7 +168,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["catId"], "40");
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductByCategoryId");
}
@ -220,7 +202,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["price"], "4023.23423");
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductByPrice");
}
@ -233,7 +215,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductByPrice");
}
@ -247,7 +229,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["manId"], "57");
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductByManufacturerId");
}
@ -260,7 +242,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetProductByManufacturerId");
}
@ -273,7 +255,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["controller"], "InlineConstraints_Products");
Assert.Equal(result["controller"], "Products");
Assert.Equal(result["action"], "GetUserByName");
Assert.Equal(result["name"], "abc");
}
@ -299,7 +281,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["id"], "691cf17a-791b-4af8-99fd-e739e168170f");
Assert.Equal(result["controller"], "InlineConstraints_Store");
Assert.Equal(result["controller"], "Store");
Assert.Equal(result["action"], "GetStoreById");
}
@ -312,7 +294,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["controller"], "InlineConstraints_Store");
Assert.Equal(result["controller"], "Store");
Assert.Equal(result["action"], "GetStoreById");
}
@ -336,7 +318,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var result = await GetResponseValues(response);
Assert.Equal(result["location"], "Bellevue");
Assert.Equal(result["controller"], "InlineConstraints_Store");
Assert.Equal(result["controller"], "Store");
Assert.Equal(result["action"], "GetStoreByLocation");
}
@ -395,7 +377,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Attribute Route, id:int? constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductById",
"id",
"5",
@ -405,17 +387,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Attribute Route, id:int? constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductById",
"id",
"sdsd",
"/area-exists/InlineConstraints_Products/GetProductById?id=sdsd"
string.Empty // Link generation expected to fail.
};
// Attribute Route, name:alpha constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductByName",
"name",
"zxcv",
@ -425,7 +407,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Attribute Route, name:length(1,20)? constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductByCategoryName",
"name",
"sports",
@ -435,7 +417,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Attribute Route, name:length(1,20)? constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductByCategoryName",
null,
null,
@ -445,7 +427,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Attribute Route, catId:int:range(10, 100) constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductByCategoryId",
"catId",
"50",
@ -455,17 +437,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Attribute Route, catId:int:range(10, 100) constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductByCategoryId",
"catId",
"500",
"/area-exists/InlineConstraints_Products/GetProductByCategoryId?catId=500"
string.Empty // Link generation expected to fail.
};
// Attribute Route, name:length(1,20)? constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductByPrice",
"price",
"123.45",
@ -475,7 +457,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Attribute Route, price:float? constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductByManufacturerId",
"manId",
"15",
@ -485,27 +467,27 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Attribute Route, manId:int:min(10)? constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductByManufacturerId",
"manId",
"qwer",
"/area-exists/InlineConstraints_Products/GetProductByManufacturerId?manId=qwer"
string.Empty // Link generation expected to fail.
};
// Attribute Route, manId:int:min(10)? constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductByManufacturerId",
"manId",
"1",
"/area-exists/InlineConstraints_Products/GetProductByManufacturerId?manId=1"
string.Empty // Link generation expected to fail.
};
// Attribute Route, dateTime:datetime constraint
yield return new object[]
{
"InlineConstraints_Products",
"Products",
"GetProductByManufacturingDate",
"dateTime",
"2014-10-11T13:45:30",
@ -515,7 +497,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
// Conventional Route, id:guid? constraint
yield return new object[]
{
"InlineConstraints_Store",
"Store",
"GetStoreById",
"id",
"691cf17a-791b-4af8-99fd-e739e168170f",

Просмотреть файл

@ -6,16 +6,16 @@ using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using JsonPatchWebSite.Models;
using JsonPatchSample.Web.Models;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public class JsonPatchTest : IClassFixture<MvcTestFixture<JsonPatchWebSite.Startup>>
public class JsonPatchSampleTest : IClassFixture<MvcTestFixture<JsonPatchSample.Web.Startup>>
{
public JsonPatchTest(MvcTestFixture<JsonPatchWebSite.Startup> fixture)
public JsonPatchSampleTest(MvcTestFixture<JsonPatchSample.Web.Startup> fixture)
{
Client = fixture.Client;
}

Просмотреть файл

@ -4,7 +4,6 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Reflection;
using System.Threading.Tasks;
using Microsoft.AspNet.Testing;
using Microsoft.Net.Http.Headers;
@ -12,12 +11,9 @@ using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public class LocalizationTest : IClassFixture<MvcTestFixture<LocalizationWebSite.Startup>>
public class LocalizationSampleTest : IClassFixture<MvcTestFixture<LocalizationSample.Web.Startup>>
{
private const string SiteName = nameof(LocalizationWebSite);
private static readonly Assembly _assembly = typeof(LocalizationTest).GetTypeInfo().Assembly;
public LocalizationTest(MvcTestFixture<LocalizationWebSite.Startup> fixture)
public LocalizationSampleTest(MvcTestFixture<LocalizationSample.Web.Startup> fixture)
{
Client = fixture.Client;
}

Просмотреть файл

@ -1,96 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using LoggingWebSite;
using Xunit.Sdk;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public static class LoggingAssert
{
/// <summary>
/// Compares two trees and verifies if the scope nodes are equal
/// </summary>
/// <param name="expected"></param>
/// <param name="actual"></param>
/// <returns></returns>
public static bool ScopesEqual(ScopeNodeDto expected, ScopeNodeDto actual)
{
// To enable diagnosis, here a flat-list(pe-order traversal based) of
// these trees is provided.
if (!AreScopesEqual(expected, actual))
{
var expectedScopes = new List<string>();
var actualScopes = new List<string>();
TraverseScopeTree(expected, expectedScopes);
TraverseScopeTree(actual, actualScopes);
throw new EqualException(expected: string.Join(", ", expectedScopes),
actual: string.Join(", ", actualScopes));
}
return true;
}
/// <summary>
/// Compares two trees and verifies if the scope nodes are equal
/// </summary>
/// <param name="root1"></param>
/// <param name="root2"></param>
/// <returns></returns>
private static bool AreScopesEqual(ScopeNodeDto root1, ScopeNodeDto root2)
{
if (root1 == null && root2 == null)
{
return true;
}
if (root1 == null || root2 == null)
{
return false;
}
if (!string.Equals(root1.State?.ToString(), root2.State?.ToString(), StringComparison.OrdinalIgnoreCase)
|| root1.Children.Count != root2.Children.Count)
{
return false;
}
bool isChildScopeEqual = true;
for (int i = 0; i < root1.Children.Count; i++)
{
isChildScopeEqual = AreScopesEqual(root1.Children[i], root2.Children[i]);
if (!isChildScopeEqual)
{
break;
}
}
return isChildScopeEqual;
}
/// <summary>
/// Traverses the scope node sub-tree and collects the list scopes
/// </summary>
/// <param name="root"></param>
/// <param name="scopes"></param>
private static void TraverseScopeTree(ScopeNodeDto root, List<string> scopes)
{
if (root == null)
{
return;
}
scopes.Add(root.State?.ToString());
foreach (var childScope in root.Children)
{
TraverseScopeTree(childScope, scopes);
}
}
}
}

Просмотреть файл

@ -1,161 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using LoggingWebSite;
using Microsoft.AspNet.WebUtilities;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public static class LoggingExtensions
{
public const string RequestTraceIdQueryKey = "RequestTraceId";
/// <summary>
/// Gets a scope node with the given name
/// </summary>
/// <param name="activities"></param>
/// <param name="scopeName"></param>
/// <returns>A scope node if found, else null</returns>
public static ScopeNodeDto FindScope(this IEnumerable<ActivityContextDto> activities,
string scopeName)
{
ScopeNodeDto node = null;
foreach (var activity in activities)
{
if (activity.RepresentsScope)
{
node = GetScope(activity.Root, scopeName);
// Ideally we do not expect multiple scopes with the same name
// to exist in the logs, so we break on the first found scope node.
// Note: The logs can contain multiple scopes with the same name across
// different requests, but the tests are expected to filter the logs by request
// (ex: using request trace id) and then find the scope by name.
if (node != null)
{
return node;
}
}
}
return node;
}
/// <summary>
/// Gets all the logs messages matching the given data type
/// </summary>
/// <param name="activities"></param>
/// <returns></returns>
public static IEnumerable<LogInfoDto> GetLogsByDataType<T>(this IEnumerable<ActivityContextDto> activities)
{
var logInfos = new List<LogInfoDto>();
foreach (var activity in activities)
{
if (!activity.RepresentsScope)
{
var logInfo = activity.Root.Messages.OfDataType<T>()
.FirstOrDefault();
if (logInfo != null)
{
logInfos.Add(logInfo);
}
}
else
{
GetLogsByDataType<T>(activity.Root, logInfos);
}
}
return logInfos;
}
/// <summary>
/// Filters for logs activties created during application startup
/// </summary>
/// <param name="activities"></param>
/// <returns></returns>
public static IEnumerable<ActivityContextDto> FilterByStartup(this IEnumerable<ActivityContextDto> activities)
{
return activities.Where(activity => activity.RequestInfo == null);
}
/// <summary>
/// Filters log activities based on the given request.
/// </summary>
/// <param name="activities"></param>
/// <param name="requestTraceId">The "RequestTraceId" query parameter value</param>
/// <returns></returns>
public static IEnumerable<ActivityContextDto> FilterByRequestTraceId(this IEnumerable<ActivityContextDto> activities,
string requestTraceId)
{
return activities.Where(activity => activity.RequestInfo != null
&& string.Equals(GetQueryValue(activity.RequestInfo.Query, RequestTraceIdQueryKey),
requestTraceId,
StringComparison.OrdinalIgnoreCase));
}
/// <summary>
/// Filters the log messages based on the given data type
/// </summary>
/// <param name="logInfos"></param>
/// <returns></returns>
public static IEnumerable<LogInfoDto> OfDataType<T>(this IEnumerable<LogInfoDto> logInfos)
{
return logInfos.Where(logInfo => logInfo.StateType != null
&& logInfo.StateType.Equals(typeof(T)));
}
/// <summary>
/// Traverses through the log node tree and gets the log messages whose StateType
/// matches the supplied data type.
/// </summary>
/// <param name="node"></param>
/// <param name="logInfoDtos"></param>
private static void GetLogsByDataType<T>(ScopeNodeDto node, IList<LogInfoDto> logInfoDtos)
{
foreach (var logInfo in node.Messages.OfDataType<T>())
{
logInfoDtos.Add(logInfo);
}
foreach (var scopeNode in node.Children)
{
GetLogsByDataType<T>(scopeNode, logInfoDtos);
}
}
private static ScopeNodeDto GetScope(ScopeNodeDto root, string scopeName)
{
if (string.Equals(root.State?.ToString(),
scopeName,
StringComparison.OrdinalIgnoreCase))
{
return root;
}
foreach (var childNode in root.Children)
{
var foundNode = GetScope(childNode, scopeName);
if (foundNode != null)
{
return foundNode;
}
}
return null;
}
private static string GetQueryValue(string query, string key)
{
var queryString = QueryHelpers.ParseQuery(query);
return queryString[key].FirstOrDefault();
}
}
}

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше