66 lines
2.8 KiB
C#
66 lines
2.8 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright from='1997' to='2001' company='Microsoft Corporation'>
|
|
// Copyright (c) Microsoft Corporation. All Rights Reserved.
|
|
// Information Contained Herein is Proprietary and Confidential.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
namespace System.Web.Services.Description {
|
|
|
|
using System.Web.Services;
|
|
using System.Web.Services.Protocols;
|
|
using System.Xml;
|
|
using System.Xml.Serialization;
|
|
using System.Xml.Schema;
|
|
using System.Collections;
|
|
using System;
|
|
using System.Reflection;
|
|
using System.CodeDom;
|
|
using System.Web.Services.Configuration;
|
|
using System.Diagnostics;
|
|
using System.ComponentModel;
|
|
using System.Security.Permissions;
|
|
using System.Globalization;
|
|
|
|
/// <include file='doc\Soap12ProtocolImporter.uex' path='docs/doc[@for="Soap12ProtocolImporter"]/*' />
|
|
[PermissionSet(SecurityAction.LinkDemand, Name = "FullTrust")]
|
|
internal class Soap12ProtocolImporter : SoapProtocolImporter {
|
|
|
|
public override string ProtocolName {
|
|
get { return "Soap12"; }
|
|
}
|
|
|
|
protected override bool IsBindingSupported() {
|
|
Soap12Binding soapBinding = (Soap12Binding)Binding.Extensions.Find(typeof(Soap12Binding));
|
|
if (soapBinding == null) return false;
|
|
|
|
if (GetTransport(soapBinding.Transport) == null) {
|
|
UnsupportedBindingWarning(Res.GetString(Res.ThereIsNoSoapTransportImporterThatUnderstands1, soapBinding.Transport));
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
protected override bool IsSoapEncodingPresent(string uriList) {
|
|
int iStart = 0;
|
|
do {
|
|
iStart = uriList.IndexOf(Soap12.Encoding, iStart, StringComparison.Ordinal);
|
|
if (iStart < 0)
|
|
break;
|
|
int iEnd = iStart + Soap12.Encoding.Length;
|
|
if (iStart == 0 || uriList[iStart - 1] == ' ')
|
|
if (iEnd == uriList.Length || uriList[iEnd] == ' ')
|
|
return true;
|
|
iStart = iEnd;
|
|
} while (iStart < uriList.Length);
|
|
|
|
// not soap 1.2 encoding. let's detect the soap 1.1 encoding and give a better error message.
|
|
// otherwise just default to the normal "encoding style not supported" error.
|
|
if (base.IsSoapEncodingPresent(uriList))
|
|
UnsupportedOperationBindingWarning(Res.GetString(Res.WebSoap11EncodingStyleNotSupported1, Soap12.Encoding));
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|