You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@@ -0,0 +1,92 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel
|
||||
{
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Configuration;
|
||||
using System.Net.Security;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.ServiceModel.Channels;
|
||||
using System.ServiceModel.Configuration;
|
||||
|
||||
[TypeForwardedFrom("System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")]
|
||||
public class BasicHttpContextBinding : BasicHttpBinding
|
||||
{
|
||||
bool contextManagementEnabled = ContextBindingElement.DefaultContextManagementEnabled;
|
||||
|
||||
public BasicHttpContextBinding()
|
||||
: base()
|
||||
{
|
||||
this.AllowCookies = true;
|
||||
}
|
||||
|
||||
public BasicHttpContextBinding(BasicHttpSecurityMode securityMode)
|
||||
: base(securityMode)
|
||||
{
|
||||
this.AllowCookies = true;
|
||||
}
|
||||
|
||||
public BasicHttpContextBinding(string configName)
|
||||
: base()
|
||||
{
|
||||
if (configName == null)
|
||||
{
|
||||
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("configName");
|
||||
}
|
||||
|
||||
BasicHttpContextBindingCollectionElement section = BasicHttpContextBindingCollectionElement.GetBindingCollectionElement();
|
||||
BasicHttpContextBindingElement element = section.Bindings[configName];
|
||||
element.ApplyConfiguration(this);
|
||||
if (element.ElementInformation.Properties["allowCookies"].ValueOrigin == PropertyValueOrigin.Default)
|
||||
{
|
||||
this.AllowCookies = true;
|
||||
}
|
||||
else if (!this.AllowCookies)
|
||||
{
|
||||
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.BasicHttpContextBindingRequiresAllowCookie, this.Namespace, this.Name));
|
||||
}
|
||||
}
|
||||
|
||||
[DefaultValue(ContextBindingElement.DefaultContextManagementEnabled)]
|
||||
public bool ContextManagementEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.contextManagementEnabled;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.contextManagementEnabled = value;
|
||||
}
|
||||
}
|
||||
|
||||
public override BindingElementCollection CreateBindingElements()
|
||||
{
|
||||
if (!this.AllowCookies)
|
||||
{
|
||||
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.BasicHttpContextBindingRequiresAllowCookie, this.Namespace, this.Name)));
|
||||
}
|
||||
|
||||
BindingElementCollection result;
|
||||
try
|
||||
{
|
||||
// Passing AllowCookies=false to HttpTransportBinding means we don't want transport layer to manage
|
||||
// cookie containers. We are going to do this at the context channel level, because we need channel
|
||||
// level isolation as opposed to channel factory level isolation.
|
||||
|
||||
this.AllowCookies = false;
|
||||
result = base.CreateBindingElements();
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.AllowCookies = true;
|
||||
}
|
||||
result.Insert(0, new ContextBindingElement(ProtectionLevel.None, ContextExchangeMechanism.HttpCookie, null, this.ContextManagementEnabled));
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user