Seperate the server layers into two projects.
This commit is contained in:
parent
93aa23b6ab
commit
bfab162b4b
|
|
@ -11,7 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{E183C826-1
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{3A1E31E3-2794-4CA3-B8E2-253E96BDE514}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{3A1E31E3-2794-4CA3-B8E2-253E96BDE514}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Server.WebListener", "src\Microsoft.AspNet.Server.WebListener\Microsoft.AspNet.Server.WebListener.kproj", "{3F5212AA-E287-49DD-8CEC-44BF0A2AC9A1}"
|
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Net.Server", "src\Microsoft.Net.Server\Microsoft.Net.Server.kproj", "{3F5212AA-E287-49DD-8CEC-44BF0A2AC9A1}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "HelloWorld", "samples\HelloWorld\HelloWorld.kproj", "{6DAF3E6B-8E1B-4E6E-B9FE-7B1E5FDB7DB4}"
|
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "HelloWorld", "samples\HelloWorld\HelloWorld.kproj", "{6DAF3E6B-8E1B-4E6E-B9FE-7B1E5FDB7DB4}"
|
||||||
EndProject
|
EndProject
|
||||||
|
|
@ -23,6 +23,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.WebSockets
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Server.WebListener.FunctionalTests", "test\Microsoft.AspNet.Server.WebListener.FunctionalTests\Microsoft.AspNet.Server.WebListener.FunctionalTests.kproj", "{4492FF4C-9032-411D-853F-46B01755E504}"
|
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Server.WebListener.FunctionalTests", "test\Microsoft.AspNet.Server.WebListener.FunctionalTests\Microsoft.AspNet.Server.WebListener.FunctionalTests.kproj", "{4492FF4C-9032-411D-853F-46B01755E504}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Server.WebListener", "src\Microsoft.AspNet.Server.WebListener\Microsoft.AspNet.Server.WebListener.kproj", "{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
|
@ -103,6 +105,16 @@ Global
|
||||||
{4492FF4C-9032-411D-853F-46B01755E504}.Release|Mixed Platforms.Build.0 = Release|x86
|
{4492FF4C-9032-411D-853F-46B01755E504}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||||
{4492FF4C-9032-411D-853F-46B01755E504}.Release|x86.ActiveCfg = Release|x86
|
{4492FF4C-9032-411D-853F-46B01755E504}.Release|x86.ActiveCfg = Release|x86
|
||||||
{4492FF4C-9032-411D-853F-46B01755E504}.Release|x86.Build.0 = Release|x86
|
{4492FF4C-9032-411D-853F-46B01755E504}.Release|x86.Build.0 = Release|x86
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}.Release|Any CPU.ActiveCfg = Release|x86
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92}.Release|x86.Build.0 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
@ -115,5 +127,6 @@ Global
|
||||||
{EFC7538F-7AEB-4A3E-A1E6-6BDCCBD272BF} = {99D5E5F3-88F5-4CCF-8D8C-717C8925DF09}
|
{EFC7538F-7AEB-4A3E-A1E6-6BDCCBD272BF} = {99D5E5F3-88F5-4CCF-8D8C-717C8925DF09}
|
||||||
{E788AEAE-2CB4-4BFA-8746-D0BB7E93A1BB} = {99D5E5F3-88F5-4CCF-8D8C-717C8925DF09}
|
{E788AEAE-2CB4-4BFA-8746-D0BB7E93A1BB} = {99D5E5F3-88F5-4CCF-8D8C-717C8925DF09}
|
||||||
{4492FF4C-9032-411D-853F-46B01755E504} = {E183C826-1360-4DFF-9994-F33CED5C8525}
|
{4492FF4C-9032-411D-853F-46B01755E504} = {E183C826-1360-4DFF-9994-F33CED5C8525}
|
||||||
|
{B9F45F9D-D206-47F0-8E5F-54CE2F0BDF92} = {99D5E5F3-88F5-4CCF-8D8C-717C8925DF09}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Microsoft.AspNet.Server.WebListener;
|
using Microsoft.Net.Server;
|
||||||
|
|
||||||
namespace HelloWorld
|
namespace HelloWorld
|
||||||
{
|
{
|
||||||
|
|
@ -9,7 +9,7 @@ namespace HelloWorld
|
||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
using (OwinWebListener listener = new OwinWebListener())
|
using (WebListener listener = new WebListener())
|
||||||
{
|
{
|
||||||
listener.UrlPrefixes.Add(UrlPrefix.Create("http://localhost:8080"));
|
listener.UrlPrefixes.Add(UrlPrefix.Create("http://localhost:8080"));
|
||||||
listener.Start();
|
listener.Start();
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"version" : "0.1-alpha-*",
|
"version" : "0.1-alpha-*",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNet.Server.WebListener" : ""
|
"Microsoft.Net.Server" : ""
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"net45": { },
|
"net45": { },
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
using Microsoft.AspNet.Abstractions;
|
using Microsoft.AspNet.Abstractions;
|
||||||
using Microsoft.AspNet.Server.WebListener;
|
using Microsoft.AspNet.Server.WebListener;
|
||||||
|
using Microsoft.Net.Server;
|
||||||
|
|
||||||
namespace SelfHostServer
|
namespace SelfHostServer
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNet.Abstractions": "0.1-alpha-*",
|
"Microsoft.AspNet.Abstractions": "0.1-alpha-*",
|
||||||
"Microsoft.AspNet.Hosting": "0.1-alpha-*",
|
"Microsoft.AspNet.Hosting": "0.1-alpha-*",
|
||||||
|
"Microsoft.Net.Server": "",
|
||||||
"Microsoft.AspNet.Server.WebListener": ""
|
"Microsoft.AspNet.Server.WebListener": ""
|
||||||
},
|
},
|
||||||
"commands": { "web": "Microsoft.AspNet.Hosting server.name=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001" },
|
"commands": { "web": "Microsoft.AspNet.Hosting server.name=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001" },
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,6 @@
|
||||||
<Compile Include="NTAuthentication.cs" />
|
<Compile Include="NTAuthentication.cs" />
|
||||||
<Compile Include="PrefixCollection.cs" />
|
<Compile Include="PrefixCollection.cs" />
|
||||||
<Compile Include="PrefixEnumerator.cs" />
|
<Compile Include="PrefixEnumerator.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
<Compile Include="ServiceNameStore.cs" />
|
<Compile Include="ServiceNameStore.cs" />
|
||||||
<Compile Include="WindowsAuthMiddleware.cs" />
|
<Compile Include="WindowsAuthMiddleware.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
// <copyright file="AssemblyInfo.cs" company="Microsoft">
|
|
||||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
|
||||||
// set of attributes. Change these attribute values to modify the information
|
|
||||||
// associated with an assembly.
|
|
||||||
[assembly: AssemblyTitle("Microsoft.AspNet.Security.Windows")]
|
|
||||||
[assembly: AssemblyDescription("")]
|
|
||||||
[assembly: AssemblyConfiguration("")]
|
|
||||||
[assembly: AssemblyCompany("")]
|
|
||||||
[assembly: AssemblyProduct("Microsoft.AspNet.Security.Windows")]
|
|
||||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
|
||||||
[assembly: AssemblyTrademark("")]
|
|
||||||
[assembly: AssemblyCulture("")]
|
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
|
||||||
// to COM components. If you need to access a type in this assembly from
|
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
|
||||||
[assembly: ComVisible(false)]
|
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
|
||||||
[assembly: Guid("1f471909-581f-4060-a147-430891e9c3c1")]
|
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
|
||||||
//
|
|
||||||
// Major Version
|
|
||||||
// Minor Version
|
|
||||||
// Build Number
|
|
||||||
// Revision
|
|
||||||
//
|
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
|
||||||
// by using the '*' as shown below:
|
|
||||||
// [assembly: AssemblyVersion("0.5")]
|
|
||||||
[assembly: AssemblyVersion("0.5")]
|
|
||||||
[assembly: AssemblyFileVersion("0.5.40117.0")]
|
|
||||||
|
|
@ -7,6 +7,7 @@ using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNet.FeatureModel;
|
using Microsoft.AspNet.FeatureModel;
|
||||||
using Microsoft.AspNet.HttpFeature;
|
using Microsoft.AspNet.HttpFeature;
|
||||||
|
using Microsoft.Net.Server;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.AspNet.Server.WebListener
|
||||||
{
|
{
|
||||||
|
|
@ -3,16 +3,17 @@ using System.Diagnostics.Contracts;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNet.Logging;
|
using Microsoft.AspNet.Logging;
|
||||||
|
using Microsoft.Net.Server;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.AspNet.Server.WebListener
|
||||||
{
|
{
|
||||||
using AppFunc = Func<object, Task>;
|
using AppFunc = Func<object, Task>;
|
||||||
|
|
||||||
internal class WebListenerWrapper : IDisposable
|
internal class MessagePump : IDisposable
|
||||||
{
|
{
|
||||||
private static readonly int DefaultMaxAccepts = 5 * Environment.ProcessorCount;
|
private static readonly int DefaultMaxAccepts = 5 * Environment.ProcessorCount;
|
||||||
|
|
||||||
private readonly OwinWebListener _listener;
|
private readonly Microsoft.Net.Server.WebListener _listener;
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
|
||||||
private AppFunc _appFunc;
|
private AppFunc _appFunc;
|
||||||
|
|
@ -23,17 +24,17 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
|
|
||||||
// TODO: private IDictionary<string, object> _capabilities;
|
// TODO: private IDictionary<string, object> _capabilities;
|
||||||
|
|
||||||
internal WebListenerWrapper(OwinWebListener listener, ILoggerFactory loggerFactory)
|
internal MessagePump(Microsoft.Net.Server.WebListener listener, ILoggerFactory loggerFactory)
|
||||||
{
|
{
|
||||||
Contract.Assert(listener != null);
|
Contract.Assert(listener != null);
|
||||||
_listener = listener;
|
_listener = listener;
|
||||||
_logger = LogHelper.CreateLogger(loggerFactory, typeof(WebListenerWrapper));
|
_logger = LogHelper.CreateLogger(loggerFactory, typeof(MessagePump));
|
||||||
|
|
||||||
_processRequest = new Action<object>(ProcessRequestAsync);
|
_processRequest = new Action<object>(ProcessRequestAsync);
|
||||||
_maxAccepts = DefaultMaxAccepts;
|
_maxAccepts = DefaultMaxAccepts;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal OwinWebListener Listener
|
internal Microsoft.Net.Server.WebListener Listener
|
||||||
{
|
{
|
||||||
get { return _listener; }
|
get { return _listener; }
|
||||||
}
|
}
|
||||||
|
|
@ -127,7 +128,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
{
|
{
|
||||||
FeatureContext featureContext = new FeatureContext(requestContext);
|
FeatureContext featureContext = new FeatureContext(requestContext);
|
||||||
await _appFunc(featureContext.Features).SupressContext();
|
await _appFunc(featureContext.Features).SupressContext();
|
||||||
await requestContext.ProcessResponseAsync().SupressContext();
|
// TODO: WebSocket/Opaque upgrade - await requestContext.ProcessResponseAsync().SupressContext();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -6,9 +6,8 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VSToolsPath)\ProjectK\Microsoft.Web.ProjectK.Props" Condition="'$(VSToolsPath)' != ''" />
|
<Import Project="$(VSToolsPath)\ProjectK\Microsoft.Web.ProjectK.Props" Condition="'$(VSToolsPath)' != ''" />
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<ProjectGuid>3f5212aa-e287-49dd-8cec-44bf0a2ac9a1</ProjectGuid>
|
<ProjectGuid>b9f45f9d-d206-47f0-8e5f-54ce2f0bdf92</ProjectGuid>
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<ActiveTargetFramework>net45</ActiveTargetFramework>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'" Label="Configuration">
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
@ -18,78 +17,16 @@
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="AsyncAcceptContext.cs" />
|
<Content Include="Project.json" />
|
||||||
<Compile Include="AuthenticationManager.cs" />
|
|
||||||
<Compile Include="AuthenticationTypes.cs" />
|
|
||||||
<Compile Include="Constants.cs" />
|
|
||||||
<Compile Include="DictionaryExtensions.cs" />
|
|
||||||
<Compile Include="fx\AssemblyNeutralAttribute.cs" />
|
|
||||||
<Compile Include="fx\IServerFactory.cs" />
|
|
||||||
<Compile Include="fx\Microsoft\Win32\SafeHandles\CriticalHandleZeroOrMinusOneIsInvalid.cs" />
|
|
||||||
<Compile Include="fx\Microsoft\Win32\SafeHandles\SafeHandleZeroOrMinusOneIsInvalid.cs" />
|
|
||||||
<Compile Include="fx\System\Diagnostics\TraceEventType.cs" />
|
|
||||||
<Compile Include="fx\System\ExternDll.cs" />
|
|
||||||
<Compile Include="fx\System\Runtime\InteropServices\ExternalException.cs" />
|
|
||||||
<Compile Include="fx\System\SafeNativeMethods.cs" />
|
|
||||||
<Compile Include="fx\System\Security\Authentication\ExtendedProtection\ChannelBinding.cs" />
|
|
||||||
<Compile Include="GlobalSuppressions.cs" />
|
|
||||||
<Compile Include="Helpers.cs" />
|
|
||||||
<Compile Include="LogHelper.cs" />
|
|
||||||
<Compile Include="NativeInterop\AddressFamily.cs" />
|
|
||||||
<Compile Include="NativeInterop\ComNetOS.cs" />
|
|
||||||
<Compile Include="NativeInterop\ContextAttribute.cs" />
|
|
||||||
<Compile Include="NativeInterop\HttpRequestQueueV2Handle.cs" />
|
|
||||||
<Compile Include="NativeInterop\HttpServerSessionHandle.cs" />
|
|
||||||
<Compile Include="NativeInterop\HttpSysRequestHeader.cs" />
|
|
||||||
<Compile Include="NativeInterop\HttpSysResponseHeader.cs" />
|
|
||||||
<Compile Include="NativeInterop\HttpSysSettings.cs" />
|
|
||||||
<Compile Include="NativeInterop\IntPtrHelper.cs" />
|
|
||||||
<Compile Include="NativeInterop\NclUtilities.cs" />
|
|
||||||
<Compile Include="NativeInterop\SafeLoadLibrary.cs" />
|
|
||||||
<Compile Include="NativeInterop\SafeLocalFree.cs" />
|
|
||||||
<Compile Include="NativeInterop\SafeLocalFreeChannelBinding.cs" />
|
|
||||||
<Compile Include="NativeInterop\SafeLocalMemHandle.cs" />
|
|
||||||
<Compile Include="NativeInterop\SafeNativeOverlapped.cs" />
|
|
||||||
<Compile Include="NativeInterop\SchProtocols.cs" />
|
|
||||||
<Compile Include="NativeInterop\SecurityStatus.cs" />
|
|
||||||
<Compile Include="NativeInterop\SocketAddress.cs" />
|
|
||||||
<Compile Include="NativeInterop\SSPIHandle.cs" />
|
|
||||||
<Compile Include="NativeInterop\UnsafeNativeMethods.cs" />
|
|
||||||
<Compile Include="OwinWebListener.cs" />
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
<Compile Include="RequestProcessing\BoundaryType.cs" />
|
|
||||||
<Compile Include="RequestProcessing\ClientCertLoader.cs" />
|
|
||||||
<Compile Include="RequestProcessing\FeatureContext.cs" />
|
|
||||||
<Compile Include="RequestProcessing\HeaderEncoding.cs" />
|
|
||||||
<Compile Include="RequestProcessing\HttpKnownHeaderNames.cs" />
|
|
||||||
<Compile Include="RequestProcessing\HttpReasonPhrase.cs" />
|
|
||||||
<Compile Include="RequestProcessing\HttpStatusCode.cs" />
|
|
||||||
<Compile Include="RequestProcessing\NativeRequestContext.cs" />
|
|
||||||
<Compile Include="RequestProcessing\OpaqueStream.cs" />
|
|
||||||
<Compile Include="RequestProcessing\Request.cs" />
|
|
||||||
<Compile Include="RequestProcessing\RequestContext.cs" />
|
|
||||||
<Compile Include="RequestProcessing\RequestHeaders.cs" />
|
|
||||||
<Compile Include="RequestProcessing\RequestHeaders.Generated.cs" />
|
|
||||||
<Compile Include="RequestProcessing\RequestStream.cs" />
|
|
||||||
<Compile Include="RequestProcessing\RequestUriBuilder.cs" />
|
|
||||||
<Compile Include="RequestProcessing\Response.cs" />
|
|
||||||
<Compile Include="RequestProcessing\ResponseStream.cs" />
|
|
||||||
<Compile Include="RequestProcessing\ResponseStreamAsyncResult.cs" />
|
|
||||||
<Compile Include="RequestProcessing\SslStatus.cs" />
|
|
||||||
<Compile Include="Resources.Designer.cs" />
|
|
||||||
<Compile Include="ServerFactory.cs" />
|
|
||||||
<Compile Include="ServerInformation.cs" />
|
|
||||||
<Compile Include="TimeoutManager.cs" />
|
|
||||||
<Compile Include="UrlPrefix.cs" />
|
|
||||||
<Compile Include="ValidationHelper.cs" />
|
|
||||||
<Compile Include="WebListenerException.cs" />
|
|
||||||
<Compile Include="WebListenerWrapper.cs" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="CustomDictionary.xml" />
|
<Compile Include="AssemblyNeutralAttribute.cs" />
|
||||||
<Content Include="Project.json" />
|
<Compile Include="FeatureContext.cs" />
|
||||||
<Content Include="RequestProcessing\RequestHeaders.Generated.tt" />
|
<Compile Include="Helpers.cs" />
|
||||||
<Content Include="Resources.resx" />
|
<Compile Include="LogHelper.cs" />
|
||||||
|
<Compile Include="ServerFactory.cs" />
|
||||||
|
<Compile Include="ServerInformation.cs" />
|
||||||
|
<Compile Include="MessagePump.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VSToolsPath)\ProjectK\Microsoft.Web.ProjectK.targets" Condition="'$(VSToolsPath)' != ''" />
|
<Import Project="$(VSToolsPath)\ProjectK\Microsoft.Web.ProjectK.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -25,6 +25,7 @@ using Microsoft.AspNet.Abstractions;
|
||||||
using Microsoft.AspNet.ConfigurationModel;
|
using Microsoft.AspNet.ConfigurationModel;
|
||||||
using Microsoft.AspNet.Hosting.Server;
|
using Microsoft.AspNet.Hosting.Server;
|
||||||
using Microsoft.AspNet.Logging;
|
using Microsoft.AspNet.Logging;
|
||||||
|
using Microsoft.Net.Server;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.AspNet.Server.WebListener
|
||||||
{
|
{
|
||||||
|
|
@ -49,9 +50,9 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
[SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification = "Disposed by caller")]
|
[SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification = "Disposed by caller")]
|
||||||
public IServerInformation Initialize(IConfiguration configuration)
|
public IServerInformation Initialize(IConfiguration configuration)
|
||||||
{
|
{
|
||||||
OwinWebListener listener = new OwinWebListener();
|
Microsoft.Net.Server.WebListener listener = new Microsoft.Net.Server.WebListener();
|
||||||
ParseAddresses(configuration, listener);
|
ParseAddresses(configuration, listener);
|
||||||
return new ServerInformation(new WebListenerWrapper(listener, _loggerFactory));
|
return new ServerInformation(new MessagePump(listener, _loggerFactory));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -78,11 +79,11 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
|
|
||||||
// TODO: var capabilities = new Dictionary<string, object>();
|
// TODO: var capabilities = new Dictionary<string, object>();
|
||||||
|
|
||||||
serverInfo.Wrapper.Start(app);
|
serverInfo.MessagePump.Start(app);
|
||||||
return serverInfo.Wrapper;
|
return serverInfo.MessagePump;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ParseAddresses(IConfiguration config, OwinWebListener listener)
|
private void ParseAddresses(IConfiguration config, Microsoft.Net.Server.WebListener listener)
|
||||||
{
|
{
|
||||||
// TODO: Key format?
|
// TODO: Key format?
|
||||||
string urls;
|
string urls;
|
||||||
|
|
|
||||||
|
|
@ -5,16 +5,16 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
{
|
{
|
||||||
public class ServerInformation : IServerInformation
|
public class ServerInformation : IServerInformation
|
||||||
{
|
{
|
||||||
private WebListenerWrapper _webListenerWrapper;
|
private MessagePump _messagePump;
|
||||||
|
|
||||||
internal ServerInformation(WebListenerWrapper webListenerWrapper)
|
internal ServerInformation(MessagePump messagePump)
|
||||||
{
|
{
|
||||||
_webListenerWrapper = webListenerWrapper;
|
_messagePump = messagePump;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal WebListenerWrapper Wrapper
|
internal MessagePump MessagePump
|
||||||
{
|
{
|
||||||
get { return _webListenerWrapper; }
|
get { return _messagePump; }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Microsoft.AspNet.Server.WebListener
|
// Microsoft.AspNet.Server.WebListener
|
||||||
|
|
@ -23,15 +23,15 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
get { return GetType().GetTypeInfo().Assembly.GetName().Name; }
|
get { return GetType().GetTypeInfo().Assembly.GetName().Name; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public OwinWebListener Listener
|
public Microsoft.Net.Server.WebListener Listener
|
||||||
{
|
{
|
||||||
get { return _webListenerWrapper.Listener; }
|
get { return _messagePump.Listener; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public int MaxAccepts
|
public int MaxAccepts
|
||||||
{
|
{
|
||||||
get { return _webListenerWrapper.MaxAccepts; }
|
get { return _messagePump.MaxAccepts; }
|
||||||
set { _webListenerWrapper.MaxAccepts = value; }
|
set { _messagePump.MaxAccepts = value; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
/* TODO: Take a temp dependency on Ms.Aspnet.Hosting until AssemblyNeutral gets fixed.
|
|
||||||
using System;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.AspNet.Abstractions;
|
|
||||||
using Microsoft.AspNet.ConfigurationModel;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Hosting.Server
|
|
||||||
{
|
|
||||||
// TODO: [AssemblyNeutral]
|
|
||||||
public interface IServerFactory
|
|
||||||
{
|
|
||||||
IServerInformation Initialize(IConfiguration configuration);
|
|
||||||
IDisposable Start(IServerInformation serverInformation, Func<object, Task> application);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"version": "0.1-alpha-*",
|
"version": "0.1-alpha-*",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"Microsoft.Net.Server" : "",
|
||||||
"Microsoft.AspNet.Abstractions": "0.1-alpha-*",
|
"Microsoft.AspNet.Abstractions": "0.1-alpha-*",
|
||||||
"Microsoft.AspNet.ConfigurationModel": "0.1-alpha-*",
|
"Microsoft.AspNet.ConfigurationModel": "0.1-alpha-*",
|
||||||
"Microsoft.AspNet.HttpFeature": "0.1-alpha-*",
|
"Microsoft.AspNet.HttpFeature": "0.1-alpha-*",
|
||||||
|
|
|
||||||
|
|
@ -10,17 +10,17 @@ using System.Diagnostics.Contracts;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal unsafe class AsyncAcceptContext : IAsyncResult, IDisposable
|
internal unsafe class AsyncAcceptContext : IAsyncResult, IDisposable
|
||||||
{
|
{
|
||||||
internal static readonly IOCompletionCallback IOCallback = new IOCompletionCallback(IOWaitCallback);
|
internal static readonly IOCompletionCallback IOCallback = new IOCompletionCallback(IOWaitCallback);
|
||||||
|
|
||||||
private TaskCompletionSource<RequestContext> _tcs;
|
private TaskCompletionSource<RequestContext> _tcs;
|
||||||
private OwinWebListener _server;
|
private WebListener _server;
|
||||||
private NativeRequestContext _nativeRequestContext;
|
private NativeRequestContext _nativeRequestContext;
|
||||||
|
|
||||||
internal AsyncAcceptContext(OwinWebListener server)
|
internal AsyncAcceptContext(WebListener server)
|
||||||
{
|
{
|
||||||
_server = server;
|
_server = server;
|
||||||
_tcs = new TaskCompletionSource<RequestContext>();
|
_tcs = new TaskCompletionSource<RequestContext>();
|
||||||
|
|
@ -43,7 +43,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private OwinWebListener Server
|
private WebListener Server
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
@ -66,7 +66,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
OwinWebListener server = asyncResult.Server;
|
WebListener server = asyncResult.Server;
|
||||||
if (errorCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS)
|
if (errorCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
// at this point we have received an unmanaged HTTP_REQUEST and memoryBlob
|
// at this point we have received an unmanaged HTTP_REQUEST and memoryBlob
|
||||||
|
|
@ -174,7 +174,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
retry = true;
|
retry = true;
|
||||||
}
|
}
|
||||||
else if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS
|
else if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS
|
||||||
&& OwinWebListener.SkipIOCPCallbackOnSuccess)
|
&& WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
// IO operation completed synchronously - callback won't be called to signal completion.
|
// IO operation completed synchronously - callback won't be called to signal completion.
|
||||||
IOCompleted(this, statusCode, bytesTransferred);
|
IOCompleted(this, statusCode, bytesTransferred);
|
||||||
|
|
@ -9,7 +9,7 @@ using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
// See the native HTTP_SERVER_AUTHENTICATION_INFO structure documentation for additional information.
|
// See the native HTTP_SERVER_AUTHENTICATION_INFO structure documentation for additional information.
|
||||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa364638(v=vs.85).aspx
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa364638(v=vs.85).aspx
|
||||||
|
|
@ -27,12 +27,12 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
Marshal.SizeOf<UnsafeNclNativeMethods.HttpApi.HTTP_SERVER_AUTHENTICATION_INFO>();
|
Marshal.SizeOf<UnsafeNclNativeMethods.HttpApi.HTTP_SERVER_AUTHENTICATION_INFO>();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private OwinWebListener _server;
|
private WebListener _server;
|
||||||
AuthenticationType _authTypes;
|
AuthenticationType _authTypes;
|
||||||
|
|
||||||
internal AuthenticationManager(OwinWebListener context)
|
internal AuthenticationManager(WebListener listener)
|
||||||
{
|
{
|
||||||
_server = context;
|
_server = listener;
|
||||||
_authTypes = AuthenticationType.None;
|
_authTypes = AuthenticationType.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4,7 +4,7 @@ using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
[Flags]
|
[Flags]
|
||||||
public enum AuthenticationType
|
public enum AuthenticationType
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal static class Constants
|
internal static class Constants
|
||||||
{
|
{
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
// <copyright file="Helpers.cs" company="Microsoft">
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
// </copyright>
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Microsoft.Net.Server
|
||||||
|
{
|
||||||
|
internal static class Helpers
|
||||||
|
{
|
||||||
|
internal static Task CompletedTask()
|
||||||
|
{
|
||||||
|
return Task.FromResult<object>(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static ConfiguredTaskAwaitable SupressContext(this Task task)
|
||||||
|
{
|
||||||
|
return task.ConfigureAwait(continueOnCapturedContext: false);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static ConfiguredTaskAwaitable<T> SupressContext<T>(this Task<T> task)
|
||||||
|
{
|
||||||
|
return task.ConfigureAwait(continueOnCapturedContext: false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <copyright file="HttpListener.cs" company="Microsoft">
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
// </copyright>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Globalization;
|
||||||
|
using Microsoft.AspNet.Logging;
|
||||||
|
|
||||||
|
namespace Microsoft.Net.Server
|
||||||
|
{
|
||||||
|
internal static class LogHelper
|
||||||
|
{
|
||||||
|
internal static ILogger CreateLogger(ILoggerFactory factory, Type type)
|
||||||
|
{
|
||||||
|
if (factory == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return factory.Create(type.FullName);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void LogInfo(ILogger logger, string data)
|
||||||
|
{
|
||||||
|
if (logger == null)
|
||||||
|
{
|
||||||
|
Debug.WriteLine(data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger.WriteInformation(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void LogVerbose(ILogger logger, string data)
|
||||||
|
{
|
||||||
|
if (logger == null)
|
||||||
|
{
|
||||||
|
Debug.WriteLine(data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger.WriteVerbose(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void LogException(ILogger logger, string location, Exception exception)
|
||||||
|
{
|
||||||
|
if (logger == null)
|
||||||
|
{
|
||||||
|
Debug.WriteLine(exception);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger.WriteError(location, exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void LogError(ILogger logger, string location, string message)
|
||||||
|
{
|
||||||
|
if (logger == null)
|
||||||
|
{
|
||||||
|
Debug.WriteLine(message);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger.WriteError(location + "; " + message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,89 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>
|
||||||
|
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VSToolsPath)\ProjectK\Microsoft.Web.ProjectK.Props" Condition="'$(VSToolsPath)' != ''" />
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>3f5212aa-e287-49dd-8cec-44bf0a2ac9a1</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<ActiveTargetFramework>net45</ActiveTargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'" Label="Configuration">
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'" Label="Configuration">
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="AsyncAcceptContext.cs" />
|
||||||
|
<Compile Include="AuthenticationManager.cs" />
|
||||||
|
<Compile Include="AuthenticationTypes.cs" />
|
||||||
|
<Compile Include="Constants.cs" />
|
||||||
|
<Compile Include="DictionaryExtensions.cs" />
|
||||||
|
<Compile Include="fx\Microsoft\Win32\SafeHandles\CriticalHandleZeroOrMinusOneIsInvalid.cs" />
|
||||||
|
<Compile Include="fx\Microsoft\Win32\SafeHandles\SafeHandleZeroOrMinusOneIsInvalid.cs" />
|
||||||
|
<Compile Include="fx\System\Diagnostics\TraceEventType.cs" />
|
||||||
|
<Compile Include="fx\System\ExternDll.cs" />
|
||||||
|
<Compile Include="fx\System\Runtime\InteropServices\ExternalException.cs" />
|
||||||
|
<Compile Include="fx\System\SafeNativeMethods.cs" />
|
||||||
|
<Compile Include="fx\System\Security\Authentication\ExtendedProtection\ChannelBinding.cs" />
|
||||||
|
<Compile Include="GlobalSuppressions.cs" />
|
||||||
|
<Compile Include="Helpers.cs" />
|
||||||
|
<Compile Include="LogHelper.cs" />
|
||||||
|
<Compile Include="NativeInterop\AddressFamily.cs" />
|
||||||
|
<Compile Include="NativeInterop\ComNetOS.cs" />
|
||||||
|
<Compile Include="NativeInterop\ContextAttribute.cs" />
|
||||||
|
<Compile Include="NativeInterop\HttpRequestQueueV2Handle.cs" />
|
||||||
|
<Compile Include="NativeInterop\HttpServerSessionHandle.cs" />
|
||||||
|
<Compile Include="NativeInterop\HttpSysRequestHeader.cs" />
|
||||||
|
<Compile Include="NativeInterop\HttpSysResponseHeader.cs" />
|
||||||
|
<Compile Include="NativeInterop\HttpSysSettings.cs" />
|
||||||
|
<Compile Include="NativeInterop\IntPtrHelper.cs" />
|
||||||
|
<Compile Include="NativeInterop\NclUtilities.cs" />
|
||||||
|
<Compile Include="NativeInterop\SafeLoadLibrary.cs" />
|
||||||
|
<Compile Include="NativeInterop\SafeLocalFree.cs" />
|
||||||
|
<Compile Include="NativeInterop\SafeLocalFreeChannelBinding.cs" />
|
||||||
|
<Compile Include="NativeInterop\SafeLocalMemHandle.cs" />
|
||||||
|
<Compile Include="NativeInterop\SafeNativeOverlapped.cs" />
|
||||||
|
<Compile Include="NativeInterop\SchProtocols.cs" />
|
||||||
|
<Compile Include="NativeInterop\SecurityStatus.cs" />
|
||||||
|
<Compile Include="NativeInterop\SocketAddress.cs" />
|
||||||
|
<Compile Include="NativeInterop\SSPIHandle.cs" />
|
||||||
|
<Compile Include="NativeInterop\UnsafeNativeMethods.cs" />
|
||||||
|
<Compile Include="WebListener.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="RequestProcessing\BoundaryType.cs" />
|
||||||
|
<Compile Include="RequestProcessing\ClientCertLoader.cs" />
|
||||||
|
<Compile Include="RequestProcessing\HeaderEncoding.cs" />
|
||||||
|
<Compile Include="RequestProcessing\HttpKnownHeaderNames.cs" />
|
||||||
|
<Compile Include="RequestProcessing\HttpReasonPhrase.cs" />
|
||||||
|
<Compile Include="RequestProcessing\HttpStatusCode.cs" />
|
||||||
|
<Compile Include="RequestProcessing\NativeRequestContext.cs" />
|
||||||
|
<Compile Include="RequestProcessing\OpaqueStream.cs" />
|
||||||
|
<Compile Include="RequestProcessing\Request.cs" />
|
||||||
|
<Compile Include="RequestProcessing\RequestContext.cs" />
|
||||||
|
<Compile Include="RequestProcessing\RequestHeaders.cs" />
|
||||||
|
<Compile Include="RequestProcessing\RequestHeaders.Generated.cs" />
|
||||||
|
<Compile Include="RequestProcessing\RequestStream.cs" />
|
||||||
|
<Compile Include="RequestProcessing\RequestUriBuilder.cs" />
|
||||||
|
<Compile Include="RequestProcessing\Response.cs" />
|
||||||
|
<Compile Include="RequestProcessing\ResponseStream.cs" />
|
||||||
|
<Compile Include="RequestProcessing\ResponseStreamAsyncResult.cs" />
|
||||||
|
<Compile Include="RequestProcessing\SslStatus.cs" />
|
||||||
|
<Compile Include="Resources.Designer.cs" />
|
||||||
|
<Compile Include="TimeoutManager.cs" />
|
||||||
|
<Compile Include="UrlPrefix.cs" />
|
||||||
|
<Compile Include="ValidationHelper.cs" />
|
||||||
|
<Compile Include="WebListenerException.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="CustomDictionary.xml" />
|
||||||
|
<Content Include="Project.json" />
|
||||||
|
<Content Include="RequestProcessing\RequestHeaders.Generated.tt" />
|
||||||
|
<Content Include="Resources.resx" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VSToolsPath)\ProjectK\Microsoft.Web.ProjectK.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||||
|
</Project>
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
/// <devdoc>
|
/// <devdoc>
|
||||||
/// <para>
|
/// <para>
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal static class ComNetOS
|
internal static class ComNetOS
|
||||||
{
|
{
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal enum ContextAttribute
|
internal enum ContextAttribute
|
||||||
{
|
{
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
using Microsoft.Win32.SafeHandles;
|
using Microsoft.Win32.SafeHandles;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
// This class is a wrapper for Http.sys V2 request queue handle.
|
// This class is a wrapper for Http.sys V2 request queue handle.
|
||||||
internal sealed class HttpRequestQueueV2Handle : SafeHandleZeroOrMinusOneIsInvalid
|
internal sealed class HttpRequestQueueV2Handle : SafeHandleZeroOrMinusOneIsInvalid
|
||||||
|
|
@ -8,7 +8,7 @@ using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Microsoft.Win32.SafeHandles;
|
using Microsoft.Win32.SafeHandles;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal sealed class HttpServerSessionHandle : CriticalHandleZeroOrMinusOneIsInvalid
|
internal sealed class HttpServerSessionHandle : CriticalHandleZeroOrMinusOneIsInvalid
|
||||||
{
|
{
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal enum HttpSysRequestHeader
|
internal enum HttpSysRequestHeader
|
||||||
{
|
{
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal enum HttpSysResponseHeader
|
internal enum HttpSysResponseHeader
|
||||||
{
|
{
|
||||||
|
|
@ -13,7 +13,7 @@ using System.Security;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal static class HttpSysSettings
|
internal static class HttpSysSettings
|
||||||
{
|
{
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal static class IntPtrHelper
|
internal static class IntPtrHelper
|
||||||
{
|
{
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal static class NclUtilities
|
internal static class NclUtilities
|
||||||
{
|
{
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||||
internal struct SSPIHandle
|
internal struct SSPIHandle
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
using Microsoft.Win32.SafeHandles;
|
using Microsoft.Win32.SafeHandles;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal sealed class SafeLoadLibrary : SafeHandleZeroOrMinusOneIsInvalid
|
internal sealed class SafeLoadLibrary : SafeHandleZeroOrMinusOneIsInvalid
|
||||||
{
|
{
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
using System;
|
using System;
|
||||||
using Microsoft.Win32.SafeHandles;
|
using Microsoft.Win32.SafeHandles;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal sealed class SafeLocalFree : SafeHandleZeroOrMinusOneIsInvalid
|
internal sealed class SafeLocalFree : SafeHandleZeroOrMinusOneIsInvalid
|
||||||
{
|
{
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Security.Authentication.ExtendedProtection;
|
using System.Security.Authentication.ExtendedProtection;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal class SafeLocalFreeChannelBinding : ChannelBinding
|
internal class SafeLocalFreeChannelBinding : ChannelBinding
|
||||||
{
|
{
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
using System;
|
using System;
|
||||||
using Microsoft.Win32.SafeHandles;
|
using Microsoft.Win32.SafeHandles;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal sealed class SafeLocalMemHandle : SafeHandleZeroOrMinusOneIsInvalid
|
internal sealed class SafeLocalMemHandle : SafeHandleZeroOrMinusOneIsInvalid
|
||||||
{
|
{
|
||||||
|
|
@ -8,7 +8,7 @@ using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal class SafeNativeOverlapped : SafeHandle
|
internal class SafeNativeOverlapped : SafeHandle
|
||||||
{
|
{
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal enum SecurityStatus
|
internal enum SecurityStatus
|
||||||
{
|
{
|
||||||
|
|
@ -11,7 +11,7 @@ using System.Globalization;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
// a little perf app measured these times when comparing the internal
|
// a little perf app measured these times when comparing the internal
|
||||||
// buffer implemented as a managed byte[] or unmanaged memory IntPtr
|
// buffer implemented as a managed byte[] or unmanaged memory IntPtr
|
||||||
|
|
@ -9,7 +9,7 @@ using System.Collections.Generic;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal static class UnsafeNclNativeMethods
|
internal static class UnsafeNclNativeMethods
|
||||||
{
|
{
|
||||||
|
|
@ -63,7 +63,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
|
|
||||||
[DllImport(HTTPAPI, ExactSpelling = true, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true)]
|
[DllImport(HTTPAPI, ExactSpelling = true, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true)]
|
||||||
internal static extern unsafe uint HttpCreateRequestQueue(HttpApi.HTTPAPI_VERSION version, string pName,
|
internal static extern unsafe uint HttpCreateRequestQueue(HttpApi.HTTPAPI_VERSION version, string pName,
|
||||||
Microsoft.AspNet.Server.WebListener.UnsafeNclNativeMethods.SECURITY_ATTRIBUTES pSecurityAttributes, uint flags, out HttpRequestQueueV2Handle pReqQueueHandle);
|
Microsoft.Net.Server.UnsafeNclNativeMethods.SECURITY_ATTRIBUTES pSecurityAttributes, uint flags, out HttpRequestQueueV2Handle pReqQueueHandle);
|
||||||
|
|
||||||
[DllImport(HTTPAPI, ExactSpelling = true, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
|
[DllImport(HTTPAPI, ExactSpelling = true, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
|
||||||
internal static extern unsafe uint HttpCloseRequestQueue(IntPtr pReqQueueHandle);
|
internal static extern unsafe uint HttpCloseRequestQueue(IntPtr pReqQueueHandle);
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
"version": "0.1-alpha-*",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNet.Logging": "0.1-alpha-*"
|
||||||
|
},
|
||||||
|
"compilationOptions": {
|
||||||
|
"allowUnsafe": true
|
||||||
|
},
|
||||||
|
"configurations": {
|
||||||
|
"net45": {},
|
||||||
|
"k10": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Collections": "4.0.0.0",
|
||||||
|
"System.Collections.Concurrent": "4.0.0.0",
|
||||||
|
"System.Diagnostics.Contracts": "4.0.0.0",
|
||||||
|
"System.Diagnostics.Debug": "4.0.10.0",
|
||||||
|
"System.Diagnostics.Tools": "4.0.0.0",
|
||||||
|
"System.Globalization": "4.0.10.0",
|
||||||
|
"System.IO": "4.0.0.0",
|
||||||
|
"System.IO.FileSystem": "4.0.0.0",
|
||||||
|
"System.IO.FileSystem.Primitives": "4.0.0.0",
|
||||||
|
"System.Linq": "4.0.0.0",
|
||||||
|
"System.Reflection": "4.0.10.0",
|
||||||
|
"System.Resources.ResourceManager": "4.0.0.0",
|
||||||
|
"System.Runtime": "4.0.20.0",
|
||||||
|
"System.Runtime.Extensions": "4.0.10.0",
|
||||||
|
"System.Runtime.InteropServices": "4.0.20.0",
|
||||||
|
"System.Runtime.Handles": "4.0.0.0",
|
||||||
|
"System.Security.Principal": "4.0.0.0",
|
||||||
|
"System.Text.Encoding": "4.0.20.0",
|
||||||
|
"System.Text.Encoding.Extensions": "4.0.10.0",
|
||||||
|
"System.Threading": "4.0.0.0",
|
||||||
|
"System.Threading.Overlapped": "4.0.0.0",
|
||||||
|
"System.Threading.Tasks": "4.0.10.0",
|
||||||
|
"System.Threading.ThreadPool": "4.0.10.0",
|
||||||
|
"Microsoft.Win32.Primitives": "4.0.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -12,11 +12,11 @@ using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("Microsoft.AspNet.Server.WebListener")]
|
[assembly: AssemblyTitle("Microsoft.Net.Server")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("Microsoft.AspNet.Server.WebListener")]
|
[assembly: AssemblyProduct("Microsoft.Net.Server")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal enum BoundaryType
|
internal enum BoundaryType
|
||||||
{
|
{
|
||||||
|
|
@ -14,7 +14,7 @@ using System.Security.Cryptography.X509Certificates;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
// This class is used to load the client certificate on-demand. Because client certs are optional, all
|
// This class is used to load the client certificate on-demand. Because client certs are optional, all
|
||||||
// failures are handled internally and reported via ClientCertException or ClientCertError.
|
// failures are handled internally and reported via ClientCertException or ClientCertError.
|
||||||
|
|
@ -177,7 +177,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
Complete(0, null);
|
Complete(0, null);
|
||||||
}
|
}
|
||||||
else if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS &&
|
else if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS &&
|
||||||
OwinWebListener.SkipIOCPCallbackOnSuccess)
|
WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
IOCompleted(statusCode, bytesReceived);
|
IOCompleted(statusCode, bytesReceived);
|
||||||
}
|
}
|
||||||
|
|
@ -243,7 +243,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
asyncResult._overlapped);
|
asyncResult._overlapped);
|
||||||
|
|
||||||
if (errorCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_IO_PENDING ||
|
if (errorCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_IO_PENDING ||
|
||||||
(errorCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && !OwinWebListener.SkipIOCPCallbackOnSuccess))
|
(errorCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && !WebListener.SkipIOCPCallbackOnSuccess))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -9,7 +9,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
// we use this static class as a helper class to encode/decode HTTP headers.
|
// we use this static class as a helper class to encode/decode HTTP headers.
|
||||||
// what we need is a 1-1 correspondence between a char in the range U+0000-U+00FF
|
// what we need is a 1-1 correspondence between a char in the range U+0000-U+00FF
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal static class HttpKnownHeaderNames
|
internal static class HttpKnownHeaderNames
|
||||||
{
|
{
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal static class HttpReasonPhrase
|
internal static class HttpReasonPhrase
|
||||||
{
|
{
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
// Redirect Status code numbers that need to be defined.
|
// Redirect Status code numbers that need to be defined.
|
||||||
|
|
||||||
|
|
@ -9,7 +9,7 @@ using System.Diagnostics;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal unsafe class NativeRequestContext : IDisposable
|
internal unsafe class NativeRequestContext : IDisposable
|
||||||
{
|
{
|
||||||
|
|
@ -9,7 +9,7 @@ using System.IO;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
// A duplex wrapper around RequestStream and ResponseStream.
|
// A duplex wrapper around RequestStream and ResponseStream.
|
||||||
// TODO: Consider merging RequestStream and ResponseStream instead.
|
// TODO: Consider merging RequestStream and ResponseStream instead.
|
||||||
|
|
@ -15,7 +15,7 @@ using System.Security.Principal;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
public sealed class Request
|
public sealed class Request
|
||||||
{
|
{
|
||||||
|
|
@ -13,13 +13,13 @@ using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNet.Logging;
|
using Microsoft.AspNet.Logging;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
using OpaqueFunc = Func<IDictionary<string, object>, Task>;
|
using OpaqueFunc = Func<IDictionary<string, object>, Task>;
|
||||||
|
|
||||||
public sealed class RequestContext : IDisposable
|
public sealed class RequestContext : IDisposable
|
||||||
{
|
{
|
||||||
private OwinWebListener _server;
|
private WebListener _server;
|
||||||
private Request _request;
|
private Request _request;
|
||||||
private Response _response;
|
private Response _response;
|
||||||
private NativeRequestContext _memoryBlob;
|
private NativeRequestContext _memoryBlob;
|
||||||
|
|
@ -28,7 +28,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
private CancellationTokenRegistration? _disconnectRegistration;
|
private CancellationTokenRegistration? _disconnectRegistration;
|
||||||
private CancellationToken? _disconnectToken;
|
private CancellationToken? _disconnectToken;
|
||||||
|
|
||||||
internal RequestContext(OwinWebListener httpListener, NativeRequestContext memoryBlob)
|
internal RequestContext(WebListener httpListener, NativeRequestContext memoryBlob)
|
||||||
{
|
{
|
||||||
// TODO: Verbose log
|
// TODO: Verbose log
|
||||||
_server = httpListener;
|
_server = httpListener;
|
||||||
|
|
@ -81,7 +81,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
context.Abort();
|
context.Abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal OwinWebListener Server
|
internal WebListener Server
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
@ -194,7 +194,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
// RequestQueueHandle may have been closed
|
// RequestQueueHandle may have been closed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
internal void OpaqueUpgrade(IDictionary<string, object> parameters, OpaqueFunc callback)
|
internal void OpaqueUpgrade(IDictionary<string, object> parameters, OpaqueFunc callback)
|
||||||
{
|
{
|
||||||
// Parameters are ignored for now
|
// Parameters are ignored for now
|
||||||
|
|
@ -245,5 +245,6 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
|
|
||||||
return opaqueEnv;
|
return opaqueEnv;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -13,7 +13,7 @@ using System.IO;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
[GeneratedCode("TextTemplatingFileGenerator", "")]
|
[GeneratedCode("TextTemplatingFileGenerator", "")]
|
||||||
internal partial class RequestHeaders
|
internal partial class RequestHeaders
|
||||||
|
|
@ -69,7 +69,7 @@ using System.IO;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.Owin.Host.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
[GeneratedCode("TextTemplatingFileGenerator", "")]
|
[GeneratedCode("TextTemplatingFileGenerator", "")]
|
||||||
internal partial class RequestHeaders
|
internal partial class RequestHeaders
|
||||||
|
|
@ -23,7 +23,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal partial class RequestHeaders : IDictionary<string, string[]>
|
internal partial class RequestHeaders : IDictionary<string, string[]>
|
||||||
{
|
{
|
||||||
|
|
@ -11,7 +11,7 @@ using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal class RequestStream : Stream
|
internal class RequestStream : Stream
|
||||||
{
|
{
|
||||||
|
|
@ -258,7 +258,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS &&
|
else if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS &&
|
||||||
OwinWebListener.SkipIOCPCallbackOnSuccess)
|
WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
// IO operation completed synchronously - callback won't be called to signal completion.
|
// IO operation completed synchronously - callback won't be called to signal completion.
|
||||||
asyncResult.IOCompleted(statusCode, bytesReturned);
|
asyncResult.IOCompleted(statusCode, bytesReturned);
|
||||||
|
|
@ -374,7 +374,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS &&
|
else if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS &&
|
||||||
OwinWebListener.SkipIOCPCallbackOnSuccess)
|
WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
// IO operation completed synchronously - callback won't be called to signal completion.
|
// IO operation completed synchronously - callback won't be called to signal completion.
|
||||||
asyncResult.Dispose();
|
asyncResult.Dispose();
|
||||||
|
|
@ -10,7 +10,7 @@ using System.Diagnostics;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
// We don't use the cooked URL because http.sys unescapes all percent-encoded values. However,
|
// We don't use the cooked URL because http.sys unescapes all percent-encoded values. However,
|
||||||
// we also can't just use the raw Uri, since http.sys supports not only Utf-8, but also ANSI/DBCS and
|
// we also can't just use the raw Uri, since http.sys supports not only Utf-8, but also ANSI/DBCS and
|
||||||
|
|
@ -14,7 +14,7 @@ using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
public sealed unsafe class Response
|
public sealed unsafe class Response
|
||||||
{
|
{
|
||||||
|
|
@ -288,7 +288,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal bool SentHeaders
|
public bool SentHeaders
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
@ -404,7 +404,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
|
|
||||||
if (asyncResult != null &&
|
if (asyncResult != null &&
|
||||||
statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS &&
|
statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS &&
|
||||||
OwinWebListener.SkipIOCPCallbackOnSuccess)
|
WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
asyncResult.BytesSent = bytesSent;
|
asyncResult.BytesSent = bytesSent;
|
||||||
// The caller will invoke IOCompleted
|
// The caller will invoke IOCompleted
|
||||||
|
|
@ -431,7 +431,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
|
|
||||||
if (asyncResult != null &&
|
if (asyncResult != null &&
|
||||||
statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS &&
|
statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS &&
|
||||||
OwinWebListener.SkipIOCPCallbackOnSuccess)
|
WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
asyncResult.BytesSent = bytesSent;
|
asyncResult.BytesSent = bytesSent;
|
||||||
// The caller will invoke IOCompleted
|
// The caller will invoke IOCompleted
|
||||||
|
|
@ -12,7 +12,7 @@ using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal class ResponseStream : Stream
|
internal class ResponseStream : Stream
|
||||||
{
|
{
|
||||||
|
|
@ -133,7 +133,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
statusCode = _requestContext.Response.SendHeaders(null, asyncResult, flags, false);
|
statusCode = _requestContext.Response.SendHeaders(null, asyncResult, flags, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && OwinWebListener.SkipIOCPCallbackOnSuccess)
|
if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
// IO operation completed synchronously - callback won't be called to signal completion.
|
// IO operation completed synchronously - callback won't be called to signal completion.
|
||||||
asyncResult.IOCompleted(statusCode);
|
asyncResult.IOCompleted(statusCode);
|
||||||
|
|
@ -425,7 +425,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && OwinWebListener.SkipIOCPCallbackOnSuccess)
|
if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
// IO operation completed synchronously - callback won't be called to signal completion.
|
// IO operation completed synchronously - callback won't be called to signal completion.
|
||||||
asyncResult.IOCompleted(statusCode, bytesSent);
|
asyncResult.IOCompleted(statusCode, bytesSent);
|
||||||
|
|
@ -565,7 +565,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && OwinWebListener.SkipIOCPCallbackOnSuccess)
|
if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
// IO operation completed synchronously - callback won't be called to signal completion.
|
// IO operation completed synchronously - callback won't be called to signal completion.
|
||||||
asyncResult.IOCompleted(statusCode, bytesSent);
|
asyncResult.IOCompleted(statusCode, bytesSent);
|
||||||
|
|
@ -680,7 +680,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && OwinWebListener.SkipIOCPCallbackOnSuccess)
|
if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
// IO operation completed synchronously - callback won't be called to signal completion.
|
// IO operation completed synchronously - callback won't be called to signal completion.
|
||||||
asyncResult.IOCompleted(statusCode, bytesSent);
|
asyncResult.IOCompleted(statusCode, bytesSent);
|
||||||
|
|
@ -11,7 +11,7 @@ using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal unsafe class ResponseStreamAsyncResult : IAsyncResult, IDisposable
|
internal unsafe class ResponseStreamAsyncResult : IAsyncResult, IDisposable
|
||||||
{
|
{
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// </copyright>
|
// </copyright>
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal enum SslStatus : byte
|
internal enum SslStatus : byte
|
||||||
{
|
{
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener {
|
namespace Microsoft.Net.Server {
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -8,7 +8,7 @@ using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
// See the native HTTP_TIMEOUT_LIMIT_INFO structure documentation for additional information.
|
// See the native HTTP_TIMEOUT_LIMIT_INFO structure documentation for additional information.
|
||||||
// http://msdn.microsoft.com/en-us/library/aa364661.aspx
|
// http://msdn.microsoft.com/en-us/library/aa364661.aspx
|
||||||
|
|
@ -25,13 +25,13 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
private static readonly int TimeoutLimitSize =
|
private static readonly int TimeoutLimitSize =
|
||||||
Marshal.SizeOf<UnsafeNclNativeMethods.HttpApi.HTTP_TIMEOUT_LIMIT_INFO>();
|
Marshal.SizeOf<UnsafeNclNativeMethods.HttpApi.HTTP_TIMEOUT_LIMIT_INFO>();
|
||||||
#endif
|
#endif
|
||||||
private OwinWebListener _server;
|
private WebListener _server;
|
||||||
private int[] _timeouts;
|
private int[] _timeouts;
|
||||||
private uint _minSendBytesPerSecond;
|
private uint _minSendBytesPerSecond;
|
||||||
|
|
||||||
internal TimeoutManager(OwinWebListener context)
|
internal TimeoutManager(WebListener listener)
|
||||||
{
|
{
|
||||||
_server = context;
|
_server = listener;
|
||||||
|
|
||||||
// We have to maintain local state since we allow applications to set individual timeouts. Native Http
|
// We have to maintain local state since we allow applications to set individual timeouts. Native Http
|
||||||
// API for setting timeouts expects all timeout values in every call so we have remember timeout values
|
// API for setting timeouts expects all timeout values in every call so we have remember timeout values
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
public class UrlPrefix
|
public class UrlPrefix
|
||||||
{
|
{
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
internal static class ValidationHelper
|
internal static class ValidationHelper
|
||||||
{
|
{
|
||||||
|
|
@ -17,14 +17,14 @@ using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNet.Logging;
|
using Microsoft.AspNet.Logging;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
using AppFunc = Func<object, Task>;
|
using AppFunc = Func<object, Task>;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An HTTP server wrapping the Http.Sys APIs that accepts requests and passes them on to the given OWIN application.
|
/// An HTTP server wrapping the Http.Sys APIs that accepts requests and passes them on to the given OWIN application.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed class OwinWebListener : IDisposable
|
public sealed class WebListener : IDisposable
|
||||||
{
|
{
|
||||||
private const long DefaultRequestQueueLength = 1000; // Http.sys default.
|
private const long DefaultRequestQueueLength = 1000; // Http.sys default.
|
||||||
#if NET45
|
#if NET45
|
||||||
|
|
@ -75,7 +75,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
// The native request queue
|
// The native request queue
|
||||||
private long? _requestQueueLength;
|
private long? _requestQueueLength;
|
||||||
|
|
||||||
public OwinWebListener()
|
public WebListener()
|
||||||
{
|
{
|
||||||
if (!UnsafeNclNativeMethods.HttpApi.Supported)
|
if (!UnsafeNclNativeMethods.HttpApi.Supported)
|
||||||
{
|
{
|
||||||
|
|
@ -754,7 +754,7 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
return CancellationToken.None;
|
return CancellationToken.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && OwinWebListener.SkipIOCPCallbackOnSuccess)
|
if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && WebListener.SkipIOCPCallbackOnSuccess)
|
||||||
{
|
{
|
||||||
// IO operation completed synchronously - callback won't be called to signal completion.
|
// IO operation completed synchronously - callback won't be called to signal completion.
|
||||||
// TODO: return a canceled token?
|
// TODO: return a canceled token?
|
||||||
|
|
@ -920,11 +920,11 @@ namespace Microsoft.AspNet.Server.WebListener
|
||||||
|
|
||||||
private class ConnectionCancellation
|
private class ConnectionCancellation
|
||||||
{
|
{
|
||||||
private readonly OwinWebListener _parent;
|
private readonly WebListener _parent;
|
||||||
private volatile bool _initialized; // Must be volatile because initialization is synchronized
|
private volatile bool _initialized; // Must be volatile because initialization is synchronized
|
||||||
private CancellationToken _cancellationToken;
|
private CancellationToken _cancellationToken;
|
||||||
|
|
||||||
public ConnectionCancellation(OwinWebListener parent)
|
public ConnectionCancellation(WebListener parent)
|
||||||
{
|
{
|
||||||
_parent = parent;
|
_parent = parent;
|
||||||
}
|
}
|
||||||
|
|
@ -9,7 +9,7 @@ using System.ComponentModel;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.Net.Server
|
||||||
{
|
{
|
||||||
[SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable")]
|
[SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable")]
|
||||||
public class WebListenerException : Win32Exception
|
public class WebListenerException : Win32Exception
|
||||||
|
|
@ -6,6 +6,7 @@ using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNet.FeatureModel;
|
using Microsoft.AspNet.FeatureModel;
|
||||||
using Microsoft.AspNet.PipelineCore;
|
using Microsoft.AspNet.PipelineCore;
|
||||||
|
using Microsoft.Net.Server;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.AspNet.Server.WebListener
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ using System.Threading.Tasks;
|
||||||
using Microsoft.AspNet.FeatureModel;
|
using Microsoft.AspNet.FeatureModel;
|
||||||
using Microsoft.AspNet.HttpFeature;
|
using Microsoft.AspNet.HttpFeature;
|
||||||
using Microsoft.AspNet.PipelineCore;
|
using Microsoft.AspNet.PipelineCore;
|
||||||
|
using Microsoft.Net.Server;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.AspNet.Server.WebListener
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNet.FeatureModel;
|
using Microsoft.AspNet.FeatureModel;
|
||||||
using Microsoft.AspNet.PipelineCore;
|
using Microsoft.AspNet.PipelineCore;
|
||||||
|
using Microsoft.Net.Server;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.AspNet.Server.WebListener
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Net.Server;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Server.WebListener
|
namespace Microsoft.AspNet.Server.WebListener
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
"xunit.core": "2.0.0-aspnet-*",
|
"xunit.core": "2.0.0-aspnet-*",
|
||||||
"xunit.execution": "2.0.0-aspnet-*",
|
"xunit.execution": "2.0.0-aspnet-*",
|
||||||
"Microsoft.AspNet.Server.WebListener" : "",
|
"Microsoft.AspNet.Server.WebListener" : "",
|
||||||
|
"Microsoft.Net.Server" : "",
|
||||||
"Microsoft.AspNet.Abstractions" : "0.1-alpha-*",
|
"Microsoft.AspNet.Abstractions" : "0.1-alpha-*",
|
||||||
"Microsoft.AspNet.ConfigurationModel": "0.1-alpha-*",
|
"Microsoft.AspNet.ConfigurationModel": "0.1-alpha-*",
|
||||||
"Microsoft.AspNet.HttpFeature" : "0.1-alpha-*",
|
"Microsoft.AspNet.HttpFeature" : "0.1-alpha-*",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue