Commit a97345443037c43d8daafe55be30d56fb478250d

Authored by Amrita Vishnoi
1 parent ca8eab62

Able to call service from controller.

400-SOURCECODE/AIAHTML5.Web/AIAHTML5.Web.csproj
... ... @@ -41,6 +41,7 @@
41 41 <Content Include="app\controllers\AuthenticationController.js" />
42 42 <Content Include="app\main\AIA.js" />
43 43 <Content Include="app\services\AuthenticationService.js" />
  44 + <Content Include="app\services\AuthInterceptor.js" />
44 45 <Content Include="content\css\main.css" />
45 46 <Content Include="content\images\1.jpg" />
46 47 <Content Include="content\images\1000x600.jpg" />
... ... @@ -299,6 +300,10 @@
299 300 <SpecificVersion>False</SpecificVersion>
300 301 <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
301 302 </Reference>
  303 + <Reference Include="System.Web.Cors, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  304 + <SpecificVersion>False</SpecificVersion>
  305 + <HintPath>..\packages\Microsoft.AspNet.Cors.5.2.3\lib\net45\System.Web.Cors.dll</HintPath>
  306 + </Reference>
302 307 <Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
303 308 <SpecificVersion>False</SpecificVersion>
304 309 <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>
... ...
400-SOURCECODE/AIAHTML5.Web/Web.config
1   -<?xml version="1.0" encoding="utf-8"?>
  1 +<?xml version="1.0" encoding="utf-8"?>
2 2 <!--
3 3 For more information on how to configure your ASP.NET application, please visit
4 4 http://go.microsoft.com/fwlink/?LinkId=169433
... ... @@ -51,13 +51,13 @@
51 51 <add value="default.aspx" />
52 52 </files>
53 53 </defaultDocument>
54   - <handlers>
  54 +
  55 + <handlers>
55 56 <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
56 57 <remove name="OPTIONSVerbHandler" />
57 58 <remove name="TRACEVerbHandler" />
58 59 <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
59   - </handlers>
60   - </system.webServer>
  60 + </handlers></system.webServer>
61 61 <runtime>
62 62 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
63 63 <dependentAssembly>
... ...
400-SOURCECODE/AIAHTML5.Web/app/controllers/AuthenticationController.js
... ... @@ -11,13 +11,21 @@
11 11  
12 12 alert('called controller');
13 13  
14   - $scope.user = AuthenticationService.GetUserName({ id: 42 });
15   - $scope.user.$promise.then(function (data) {
16   - $scope.user = data;
  14 + //$scope.user = AuthenticationService.GetUserName({ id: 42 });
  15 + //$scope.user.$promise.then(function (data) {
  16 + // $scope.user = data;
17 17  
18   - debugger;
19   - alert('called webAPI' + $scope.user);
20   - });
  18 + // debugger;
  19 + // alert('called webAPI' + $scope.user);
  20 + //});
  21 +
  22 + $scope.user = AuthenticationService.login();
  23 + //$scope.user.$promise.then(function (data) {
  24 + // $scope.user = data;
  25 +
  26 + // debugger;
  27 + // alert('called webAPI' + $scope.user);
  28 + //});
21 29 }
22 30  
23 31 }])
... ...
400-SOURCECODE/AIAHTML5.Web/app/main/AIA.js
... ... @@ -25,10 +25,12 @@ AIA.constant(&#39;pages&#39;, [
25 25 ]);
26 26  
27 27  
28   -AIA.config(function ($routeProvider, pages, $locationProvider) {
  28 +AIA.config(function ($routeProvider, pages, $locationProvider,$httpProvider) {
29 29  
30 30 $locationProvider.html5Mode(true);
31 31  
  32 + //$httpProvider.interceptors.push("AuthInterceptor");
  33 +
32 34 for (var i = 0; i < pages.length; i++) {
33 35 if (pages[i].pageSlug != null) {
34 36 $routeProvider.when('/' + pages[i].pageSlug,
... ...
400-SOURCECODE/AIAHTML5.Web/app/services/AuthenticationService.js
... ... @@ -19,18 +19,27 @@
19 19  
20 20 // }}});
21 21  
  22 +//angular
  23 +//.module('AIA')
  24 +//.factory('AuthenticationService', ['$resource', function ($resource) {
  25 +// return $resource('http://localhost/AIA/API/User/:id',
  26 +// { id: '@id' }, {
  27 +// GetUserName: {
  28 +// method: 'GET',
  29 +// params: { id: '@id' },
  30 +// isArray: false,
  31 +
  32 +// }
  33 +
  34 +// });
  35 +//}]);
  36 +
22 37 angular
23 38 .module('AIA')
24 39 .factory('AuthenticationService', ['$resource', function ($resource) {
25   - return $resource('http://localhost/AIA/API/User/:id',
26   - { id: '@id' }, {
27   - GetUserName: {
28   - method: 'GET',
29   - params: { id: '@id' },
30   - isArray: false,
31   -
32   - }
33   -
34   - });
  40 + return {
  41 + login: function (userName, Password) {
  42 + alert('called service');
  43 + }
  44 + }
35 45 }]);
36   -
... ...
400-SOURCECODE/AIAHTML5.Web/app/services/authInterceptor.js 0 → 100644
  1 +(function () {
  2 +
  3 + "use strict";
  4 +
  5 + angular.module("AIA")
  6 + .factory("Authinterceptor", [
  7 + "$window", function ($window) {
  8 +
  9 + var storage = $window.localStorage;
  10 +
  11 + return {
  12 + request: function(config) {
  13 + var token = storage.getItem("jwt_token");
  14 + if (token) {
  15 + config.headers.Authorization = "Bearer" + " " + token;
  16 + }
  17 + return config;
  18 + },
  19 +
  20 + response: function(response) {
  21 + return response;
  22 + }
  23 + };
  24 + }
  25 + ]);
  26 +})();
0 27 \ No newline at end of file
... ...
400-SOURCECODE/AIAHTML5.Web/packages.config
... ... @@ -2,4 +2,8 @@
2 2 <packages>
3 3 <package id="AngularJS.Core" version="1.5.5" targetFramework="net45" />
4 4 <package id="AngularJS.Resource" version="1.5.5" targetFramework="net45" />
  5 + <package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net45" />
  6 + <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
  7 + <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
  8 + <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
5 9 </packages>
6 10 \ No newline at end of file
... ...
400-SOURCECODE/AIAHTML5.WebAPI/AIAHTML5.API.csproj
... ... @@ -39,15 +39,24 @@
39 39 <WarningLevel>4</WarningLevel>
40 40 </PropertyGroup>
41 41 <ItemGroup>
  42 + <Reference Include="JWT">
  43 + <HintPath>..\packages\JWT.1.3.4\lib\3.5\JWT.dll</HintPath>
  44 + </Reference>
42 45 <Reference Include="Microsoft.CSharp" />
43 46 <Reference Include="System" />
44 47 <Reference Include="System.Data" />
45 48 <Reference Include="System.Drawing" />
  49 + <Reference Include="System.Web.Cors">
  50 + <HintPath>..\AIAHTML5.Web\bin\System.Web.Cors.dll</HintPath>
  51 + </Reference>
46 52 <Reference Include="System.Web.Entity" />
47 53 <Reference Include="System.Web.ApplicationServices" />
48 54 <Reference Include="System.ComponentModel.DataAnnotations" />
49 55 <Reference Include="System.Core" />
50 56 <Reference Include="System.Data.DataSetExtensions" />
  57 + <Reference Include="System.Web.Http.Cors">
  58 + <HintPath>..\AIAHTML5.Web\bin\System.Web.Http.Cors.dll</HintPath>
  59 + </Reference>
51 60 <Reference Include="System.Xml.Linq" />
52 61 <Reference Include="System.Web" />
53 62 <Reference Include="System.Web.Abstractions" />
... ... @@ -147,6 +156,7 @@
147 156 <Compile Include="Areas\HelpPage\SampleGeneration\SampleDirection.cs" />
148 157 <Compile Include="Areas\HelpPage\SampleGeneration\TextSample.cs" />
149 158 <Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" />
  159 + <Compile Include="Controllers\AccountController.cs" />
150 160 <Compile Include="Controllers\HomeController.cs" />
151 161 <Compile Include="Controllers\JsonContent.cs" />
152 162 <Compile Include="Controllers\UserController.cs" />
... ... @@ -155,7 +165,12 @@
155 165 <DependentUpon>Global.asax</DependentUpon>
156 166 </Compile>
157 167 <Compile Include="Models\RawJsonActionResult .cs" />
  168 + <Compile Include="Models\Role.cs" />
  169 + <Compile Include="Models\test.cs" />
  170 + <Compile Include="Models\User.cs" />
  171 + <Compile Include="Models\UserRole.cs" />
158 172 <Compile Include="Properties\AssemblyInfo.cs" />
  173 + <Compile Include="ViewModels\LoginViewModel.cs" />
159 174 </ItemGroup>
160 175 <ItemGroup>
161 176 <Content Include="Areas\HelpPage\HelpPage.css" />
... ...
400-SOURCECODE/AIAHTML5.WebAPI/App_Start/WebApiConfig.cs
... ... @@ -5,6 +5,7 @@ using System.Linq;
5 5 using System.Net.Http.Formatting;
6 6 using System.Net.Http.Headers;
7 7 using System.Web.Http;
  8 +using System.Web.Http.Cors;
8 9  
9 10 namespace AIAHTML5.API
10 11 {
... ... @@ -13,7 +14,8 @@ namespace AIAHTML5.API
13 14 public static void Register(HttpConfiguration config)
14 15 {
15 16 // Web API configuration and services
16   -
  17 + var cors = new EnableCorsAttribute("*", "*", "*");
  18 + config.EnableCors(cors);
17 19 // Web API routes
18 20 config.MapHttpAttributeRoutes();
19 21  
... ... @@ -23,7 +25,7 @@ namespace AIAHTML5.API
23 25 defaults: new { id = RouteParameter.Optional }
24 26 );
25 27  
26   - // config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
  28 + config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
27 29 }
28 30 }
29 31 }
... ...
400-SOURCECODE/AIAHTML5.WebAPI/Controllers/AccountController.cs 0 → 100644
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using System.Linq;
  4 +using System.Net;
  5 +using System.Net.Http;
  6 +using System.Security.Cryptography;
  7 +using System.Text;
  8 +using System.Web.Http;
  9 +using AIAHTML5.WebAPI.Models;
  10 +using AIAHTML5.WebAPI.ViewModels;
  11 +using JWT;
  12 +
  13 +
  14 +namespace AIAHTML5.WebAPI.Controllers
  15 +{
  16 + public class AccountController : ApiController
  17 + {
  18 +
  19 + [AllowAnonymous]
  20 + [Route("api/signin")]
  21 + [HttpPost]
  22 + public HttpResponseMessage Login(LoginViewModel model)
  23 + {
  24 + var loginSuccess = false;
  25 + User userObj = new User();
  26 + userObj.Email = "amrita.vishnoi@ebix.com";
  27 + userObj.Id = 1;
  28 +
  29 + HttpResponseMessage response = null;
  30 + if (ModelState.IsValid)
  31 + {
  32 + if (model.Email == userObj.Email && model.Password == "education")
  33 + {
  34 + loginSuccess = true;
  35 + }
  36 + else
  37 + {
  38 + loginSuccess = false;
  39 + }
  40 +
  41 + if (loginSuccess)
  42 + {
  43 + object dbUser;
  44 + var token = CreateToken(userObj, out dbUser);
  45 + response = Request.CreateResponse(new { dbUser, token });
  46 + }
  47 + }
  48 +
  49 + else
  50 + {
  51 + response = Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
  52 + }
  53 + return response;
  54 + }
  55 +
  56 + //[AllowAnonymous]
  57 + //[Route("signup")]
  58 + //[HttpPost]
  59 + //public HttpResponseMessage Register(RegisterViewModel model)
  60 + //{
  61 + // HttpResponseMessage response;
  62 + // if (ModelState.IsValid)
  63 + // {
  64 + // var existingUser = db.Users.FirstOrDefault(u => u.Email == model.Email);
  65 + // if (existingUser != null)
  66 + // {
  67 + // return Request.CreateResponse(HttpStatusCode.BadRequest, "User already exist.");
  68 + // }
  69 +
  70 + // //Create user and save to database
  71 + // //var user = CreateUser(model);
  72 +
  73 + // object dbUser;
  74 +
  75 + // //Create token
  76 + // var token = CreateToken(user, out dbUser);
  77 +
  78 + // response = Request.CreateResponse(new { dbUser, token });
  79 + // }
  80 + // else
  81 + // {
  82 + // response = Request.CreateResponse(HttpStatusCode.BadRequest, new { success = false });
  83 + // }
  84 +
  85 + // return response;
  86 + //}
  87 +
  88 + /// <summary>
  89 + /// Create a Jwt with user information
  90 + /// </summary>
  91 + /// <param name="user"></param>
  92 + /// <param name="dbUser"></param>
  93 + /// <returns></returns>
  94 + private static string CreateToken(User user, out object dbUser)
  95 + {
  96 + var unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
  97 + var expiry = Math.Round((DateTime.UtcNow.AddHours(2) - unixEpoch).TotalSeconds);
  98 + var issuedAt = Math.Round((DateTime.UtcNow - unixEpoch).TotalSeconds);
  99 + var notBefore = Math.Round((DateTime.UtcNow.AddMonths(6) - unixEpoch).TotalSeconds);
  100 +
  101 +
  102 + var payload = new Dictionary<string, object>
  103 + {
  104 + {"email", user.Email},
  105 + {"userId", user.Id},
  106 + {"role", "Admin" },
  107 + {"sub", user.Id},
  108 + {"nbf", notBefore},
  109 + {"iat", issuedAt},
  110 + {"exp", expiry}
  111 + };
  112 +
  113 + //var secret = ConfigurationManager.AppSettings.Get("jwtKey");
  114 + const string apikey = "secretKey";
  115 +
  116 + var token = JsonWebToken.Encode(payload, apikey, JwtHashAlgorithm.HS256);
  117 +
  118 + dbUser = new { user.Email, user.Id };
  119 + return token;
  120 + }
  121 +
  122 + /// <summary>
  123 + /// Create a new user and saves it to the database
  124 + /// </summary>
  125 + /// <param name="registerDetails"></param>
  126 + /// <returns></returns>
  127 + //private User CreateUser(RegisterViewModel registerDetails)
  128 + //{
  129 + // var passwordSalt = CreateSalt();
  130 + // var user = new User
  131 + // {
  132 + // Salt = passwordSalt,
  133 + // Email = registerDetails.Email,
  134 + // PasswordHash = EncryptPassword(registerDetails.Password, passwordSalt)
  135 + // };
  136 +
  137 + // var adminRole = db.Roles.FirstOrDefault(d => d.Name == "Admin");
  138 +
  139 + // user.Roles.Add(new UserRole
  140 + // {
  141 + // User = user,
  142 + // Role = adminRole
  143 + // });
  144 +
  145 + // db.Users.Add(user);
  146 + // db.SaveChanges();
  147 +
  148 + // return user;
  149 + //}
  150 +
  151 +
  152 + /// <summary>
  153 + /// Creates a random salt to be used for encrypting a password
  154 + /// </summary>
  155 + /// <returns></returns>
  156 + public static string CreateSalt()
  157 + {
  158 + var data = new byte[0x10];
  159 + using (var cryptoServiceProvider = new RNGCryptoServiceProvider())
  160 + {
  161 + cryptoServiceProvider.GetBytes(data);
  162 + return Convert.ToBase64String(data);
  163 + }
  164 + }
  165 +
  166 + /// <summary>
  167 + /// Encrypts a password using the given salt
  168 + /// </summary>
  169 + /// <param name="password"></param>
  170 + /// <param name="salt"></param>
  171 + /// <returns></returns>
  172 + public static string EncryptPassword(string password, string salt)
  173 + {
  174 + using (var sha256 = SHA256.Create())
  175 + {
  176 + var saltedPassword = string.Format("{0}{1}", salt, password);
  177 + var saltedPasswordAsBytes = Encoding.UTF8.GetBytes(saltedPassword);
  178 + return Convert.ToBase64String(sha256.ComputeHash(saltedPasswordAsBytes));
  179 + }
  180 + }
  181 +
  182 + //protected override void Dispose(bool disposing)
  183 + //{
  184 + // if (disposing)
  185 + // {
  186 + // db.Dispose();
  187 + // }
  188 + // base.Dispose(disposing);
  189 + //}
  190 + }
  191 +}
0 192 \ No newline at end of file
... ...
400-SOURCECODE/AIAHTML5.WebAPI/Models/Role.cs 0 → 100644
  1 +using System.Collections.Generic;
  2 +
  3 +namespace AIAHTML5.WebAPI.Models
  4 +{
  5 + public class Role
  6 + {
  7 + public Role()
  8 + {
  9 + Users = new List<UserRole>();
  10 + }
  11 + public int Id { get; set; }
  12 + public string Name { get; set; }
  13 +
  14 + public virtual ICollection<UserRole> Users { get; set; }
  15 + }
  16 +}
0 17 \ No newline at end of file
... ...
400-SOURCECODE/AIAHTML5.WebAPI/Models/User.cs 0 → 100644
  1 +using System.Collections.Generic;
  2 +
  3 +namespace AIAHTML5.WebAPI.Models
  4 +{
  5 + public class User
  6 + {
  7 + public User()
  8 + {
  9 + Roles = new List<UserRole>();
  10 + }
  11 + public int Id { get; set; }
  12 + public string Email { get; set; }
  13 + public string PasswordHash { get; set; }
  14 + public string Salt { get; set; }
  15 +
  16 + public virtual ICollection<UserRole> Roles { get; set; }
  17 + }
  18 +}
0 19 \ No newline at end of file
... ...
400-SOURCECODE/AIAHTML5.WebAPI/Models/UserRole.cs 0 → 100644
  1 +namespace AIAHTML5.WebAPI.Models
  2 +{
  3 + public class UserRole
  4 + {
  5 + public int Id { get; set; }
  6 + public int RoleId { get; set; }
  7 + public int UserId { get; set; }
  8 +
  9 + public virtual User User { get; set; }
  10 + public virtual Role Role { get; set; }
  11 + }
  12 +}
0 13 \ No newline at end of file
... ...
400-SOURCECODE/AIAHTML5.WebAPI/Models/test.cs 0 → 100644
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using System.Linq;
  4 +using System.Web;
  5 +
  6 +namespace AIAHTML5.WebAPI.Models
  7 +{
  8 + public class test
  9 + {
  10 + }
  11 +}
0 12 \ No newline at end of file
... ...
400-SOURCECODE/AIAHTML5.WebAPI/ViewModels/LoginViewModel.cs 0 → 100644
  1 +using System.ComponentModel.DataAnnotations;
  2 +
  3 +namespace AIAHTML5.WebAPI.ViewModels
  4 +{
  5 + public class LoginViewModel
  6 + {
  7 + [Required]
  8 + [Display(Name = "Email")]
  9 + [EmailAddress]
  10 + public string Email { get; set; }
  11 +
  12 + [Required]
  13 + [DataType(DataType.Password)]
  14 + [Display(Name = "Password")]
  15 + public string Password { get; set; }
  16 +
  17 + [Display(Name = "Remember me?")]
  18 + public bool RememberMe { get; set; }
  19 + }
  20 +}
0 21 \ No newline at end of file
... ...
400-SOURCECODE/AIAHTML5.WebAPI/Web.config
... ... @@ -34,7 +34,7 @@
34 34 </dependentAssembly>
35 35 <dependentAssembly>
36 36 <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
37   - <bindingRedirect oldVersion="1.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
  37 + <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
38 38 </dependentAssembly>
39 39 <dependentAssembly>
40 40 <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
... ...
400-SOURCECODE/AIAHTML5.WebAPI/packages.config
... ... @@ -3,6 +3,7 @@
3 3 <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
4 4 <package id="bootstrap" version="3.0.0" targetFramework="net45" />
5 5 <package id="jQuery" version="1.10.2" targetFramework="net45" />
  6 + <package id="JWT" version="1.3.4" targetFramework="net45" />
6 7 <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" />
7 8 <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net45" />
8 9 <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net45" />
... ...
400-SOURCECODE/packages/JWT.1.3.4/JWT.1.3.4.nupkg 0 → 100644
No preview for this file type
400-SOURCECODE/packages/JWT.1.3.4/JWT.1.3.4.nuspec 0 → 100644
  1 +<?xml version="1.0"?>
  2 +<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  3 + <metadata>
  4 + <id>JWT</id>
  5 + <version>1.3.4</version>
  6 + <title>JWT</title>
  7 + <authors>John Sheehan, Michael Lehenbauer</authors>
  8 + <owners>John Sheehan, Michael Lehenbauer</owners>
  9 + <projectUrl>http://github.com/johnsheehan/jwt</projectUrl>
  10 + <requireLicenseAcceptance>false</requireLicenseAcceptance>
  11 + <description>JWT (JSON Web Token) Implementation for .NET (Public Domain)</description>
  12 + <summary />
  13 + <language>en-US</language>
  14 + <tags>jwt json</tags>
  15 + </metadata>
  16 +</package>
0 17 \ No newline at end of file
... ...
400-SOURCECODE/packages/JWT.1.3.4/lib/3.5/JWT.dll 0 → 100644
No preview for this file type
400-SOURCECODE/packages/Microsoft.AspNet.Cors.5.2.3/Microsoft.AspNet.Cors.5.2.3.nupkg 0 → 100644
No preview for this file type
400-SOURCECODE/packages/Microsoft.AspNet.Cors.5.2.3/Microsoft.AspNet.Cors.5.2.3.nuspec 0 → 100644
  1 +<?xml version="1.0"?>
  2 +<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  3 + <metadata>
  4 + <id>Microsoft.AspNet.Cors</id>
  5 + <version>5.2.3</version>
  6 + <title>Microsoft ASP.NET Cross-Origin Support</title>
  7 + <authors>Microsoft</authors>
  8 + <owners>Microsoft</owners>
  9 + <licenseUrl>http://www.microsoft.com/web/webpi/eula/net_library_eula_ENU.htm</licenseUrl>
  10 + <projectUrl>http://www.asp.net/web-api</projectUrl>
  11 + <iconUrl>http://go.microsoft.com/fwlink/?LinkID=288859</iconUrl>
  12 + <requireLicenseAcceptance>true</requireLicenseAcceptance>
  13 + <description>This package contains the core components to enable Cross-Origin Resource Sharing (CORS) in ASP.NET.</description>
  14 + <summary>This package contains the core components to enable Cross-Origin Resource Sharing (CORS) in ASP.NET.</summary>
  15 + <releaseNotes>Please visit http://go.microsoft.com/fwlink/?LinkID=403010 to view the release notes.</releaseNotes>
  16 + <copyright>© Microsoft Corporation. All rights reserved.</copyright>
  17 + <language>en-US</language>
  18 + <tags>Microsoft AspNet Cors Cross Origin</tags>
  19 + </metadata>
  20 +</package>
0 21 \ No newline at end of file
... ...
400-SOURCECODE/packages/Microsoft.AspNet.Cors.5.2.3/lib/net45/System.Web.Cors.dll 0 → 100644
No preview for this file type
400-SOURCECODE/packages/repositories.config
1 1 <?xml version="1.0" encoding="utf-8"?>
2 2 <repositories>
3   - <repository path="..\AIAHTML5.API\packages.config" />
4 3 <repository path="..\AIAHTML5.Web\packages.config" />
5 4 <repository path="..\AIAHTML5.WebAPI\packages.config" />
6   - <repository path="..\AIAHTML5API\packages.config" />
7 5 <repository path="..\WebApplication1\packages.config" />
8 6 </repositories>
9 7 \ No newline at end of file
... ...