<%@ Import Namespace="System.Xml.Schema" %>
<%@ Import Namespace="System.Web.Services" %>
<%@ Import Namespace="System.Web.Services.Description" %>
+<%@ Import Namespace="System.Web.Services.Configuration" %>
+<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Globalization" %>
<%@ Import Namespace="System.CodeDom.Compiler" %>
<%@ Import Namespace="Microsoft.CSharp" %>
<%@ Import Namespace="Microsoft.VisualBasic" %>
+<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Text.RegularExpressions" %>
<%@ Assembly name="System.Web.Services" %>
<%@ Page debug="true" %>
Page.DataBind();
ProfileViolations = new BasicProfileViolationCollection ();
- //WebServicesInteroperability.CheckConformance (WsiClaims.BP10, descriptions, ProfileViolations);
+ foreach (WsiProfilesElement claims in ((WebServicesSection) WebConfigurationManager.GetSection("system.web/webServices")).ConformanceWarnings)
+ if (claims.Name != WsiProfiles.None)
+ WebServicesInteroperability.CheckConformance (claims.Name, descriptions, ProfileViolations);
}
void BuildOperationInfo ()
CurrentOperationProtocols += (string) prots[n];
}
- CurrentOperationSupportsTest = prots.Contains ("HttpGet") || prots.Contains ("HttpPost");
+ WebServiceProtocols testProtocols = WebServiceProtocols.HttpGet | WebServiceProtocols.HttpPost;
+ if (Context.Request.IsLocal)
+ testProtocols |= WebServiceProtocols.HttpPostLocalhost;
+ CurrentOperationSupportsTest = (WebServicesSection.Current.EnabledProtocols & testProtocols) != 0;
// Operation format
OperationBinding obin = FindOperation (binding, CurrentOperationName);
string FormatBindingName (string name)
{
- if (name == DefaultBinding) return "Methods";
+ if (name.EndsWith("Soap")) return "Soap 1.1";
+ else if (name.EndsWith("Soap12")) return "Soap 1.2";
else return "Methods for binding<br>" + name;
}
{
string url = location + "/" + CurrentOperationName;
Uri uri = new Uri (url);
- WebRequest req = WebRequest.Create (url + ".invoke?" + qs);
+ WebRequest req;
+ if (CurrentOperationProtocols.IndexOf ("HttpGet") < 0) {
+ req = WebRequest.Create (url + ".invoke");
+ req.Method="POST";
+ if (!String.IsNullOrEmpty (qs)) {
+ req.ContentType = "application/x-www-form-urlencoded";
+ byte [] postBuffer = Encoding.UTF8.GetBytes (qs);
+ req.ContentLength = postBuffer.Length;
+ using (Stream requestStream = req.GetRequestStream())
+ requestStream.Write (postBuffer, 0, postBuffer.Length);
+ }
+ }
+ else
+ req = WebRequest.Create (url + ".invoke?" + qs);
HttpCookieCollection cookies = Request.Cookies;
int last = cookies.Count;
if (last > 0) {
}
catch (Exception ex)
{
- string res = "<b style='color:red'>" + ex.Message + "<br/>" + ex.StackTrace.Replace("\n", "<br/>") + "</b>";
+ string res = "<b style='color:red'>" + ex.Message + "</b>";
WebException wex = ex as WebException;
if (wex != null)
{
static readonly XmlQualifiedName anyType = new XmlQualifiedName ("anyType",XmlSchema.Namespace);
static readonly XmlQualifiedName arrayType = new XmlQualifiedName ("Array","http://schemas.xmlsoap.org/soap/encoding/");
static readonly XmlQualifiedName arrayTypeRefName = new XmlQualifiedName ("arrayType","http://schemas.xmlsoap.org/soap/encoding/");
- const string SoapEnvelopeNamespace = "http://schemas.xmlsoap.org/soap/envelope/";
const string WsdlNamespace = "http://schemas.xmlsoap.org/wsdl/";
const string SoapEncodingNamespace = "http://schemas.xmlsoap.org/soap/encoding/";
public string GenerateSoapMessage (OperationBinding obin, Operation oper, OperationMessage msg)
{
+ string SoapEnvelopeNamespace = "http://schemas.xmlsoap.org/soap/envelope/";
+ if(obin.Binding.Name.EndsWith("Soap12"))
+ SoapEnvelopeNamespace = "http://www.w3.org/2003/05/soap-envelope";
+
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
SoapBindingStyle style = (sob != null) ? sob.Style : SoapBindingStyle.Document;
.title { color:dimgray; font-family: Arial; font-size:20pt; font-weight:900}
.operationTitle { color:dimgray; font-family: Arial; font-size:15pt; font-weight:900}
.method { font-size: x-small }
- .bindingLabel { font-size: x-small; font-weight:bold; color:darkgray; line-height:8pt; display:block; margin-bottom:3px }
+ .bindingLabel { font-size: medium; font-weight:bold; color:darkgray; line-height:8pt; display:block; margin-bottom:3px }
.label { font-size: small; font-weight:bold; color:darkgray }
.paramTable { font-size: x-small }
.paramTable TR { background-color: gainsboro }
<a class="method" href='<%=PageName%>'>Overview</a><br>
<div class="smallSeparator"></div>
<a class="method" href='<%=PageName + "?" + GetPageContext("wsdl")%>'>Service Description</a>
+<!--
<div class="smallSeparator"></div>
<a class="method" href='<%=PageName + "?" + GetPageContext("proxy")%>'>Client proxy</a>
+-->
<br><br>
<asp:repeater id="BindingsRepeater" runat=server>
<itemtemplate>
<br/><br/>
<% if (ProfileViolations.Count > 0) { %>
<p class="label">Basic Profile Conformance</p>
- This web service does not conform to WS-I Basic Profile v1.0
+ This web service does not conform to WS-I Basic Profile v1.1
<%
Response.Write ("<ul>");
foreach (BasicProfileViolation vio in ProfileViolations) {