Commit 095100a8 authored by Vladislav Bogdashkin's avatar Vladislav Bogdashkin 🎣

remove libs files

parent 95959ef5
......@@ -13,3 +13,10 @@
/captures
.externalNativeBuild
.cxx
/app/libs
/app/src/main/assets
/app/src/main/jniLibs
/app/release
No preview for this file type
No preview for this file type
<!--
This file defines some of the browsers that Microsoft's implementation provides in
<windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers\*.browser
It is not derived from any file distributed with Microsoft's implementation. Since
we can't distribute MS's browser files, we use browscap.ini to determine
browser capabilities. Then, if and only if the application contains App_Browser/*.browser
files and we are using .NET 2.0 or higher, we supplement the capabilities with the
information in those files and the files in this directory. The primary goal of this file
is provide browser definitions that might be referenced in App_Browser/*.browser files.
-->
<browsers>
<defaultBrowser id="Default">
</defaultBrowser>
<browser id="Default">
<identification>
<userAgent match="." />
</identification>
</browser>
<browser id="IE6to9" parentID="Default">
<identification>
<capability name="majorver" match="^[6-9]" />
<capability name="browser" match="^(IE|AOL)$" />
</identification>
</browser>
<browser id="Opera8to9" parentID="Default">
<identification>
<capability name="majorver" match="^[8-9]" />
<capability name="browser" match="^Opera$" />
</identification>
</browser>
<browser id="Safari" parentID="Default">
<identification>
<capability name="browser" match="^Safari$" />
</identification>
</browser>
<browser id="Mozilla" parentID="Default">
<identification>
<capability name="browser" match="^Mozilla" />
</identification>
</browser>
</browsers>
\ No newline at end of file
<%--
//
// DefaultWsdlHelpGenerator.aspx:
//
// Author:
// Lluis Sanchez Gual (lluis@ximian.com)
//
// (C) 2003 Ximian, Inc. http://www.ximian.com
//
--%>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Xml.Serialization" %>
<%@ Import Namespace="System.Xml" %>
<%@ 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.Resources" %>
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.CodeDom" %>
<%@ Import Namespace="System.CodeDom.Compiler" %>
<%@ Import Namespace="Microsoft.CSharp" %>
<%@ Import Namespace="Microsoft.VisualBasic" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Text.RegularExpressions" %>
<%@ Import Namespace="System.Security.Cryptography.X509Certificates" %>
<%@ Assembly name="System.Web.Services" %>
<%@ Page debug="true" %>
<html>
<script language="C#" runat="server">
ServiceDescriptionCollection descriptions;
XmlSchemas schemas;
string WebServiceName;
string WebServiceDescription;
string PageName;
string DefaultBinding;
ArrayList ServiceProtocols;
string CurrentOperationName;
string CurrentOperationBinding;
string OperationDocumentation;
string CurrentOperationFormat;
bool CurrentOperationSupportsTest;
ArrayList InParams;
ArrayList OutParams;
string CurrentOperationProtocols;
int CodeTextColumns = 95;
BasicProfileViolationCollection ProfileViolations;
void Page_Load(object sender, EventArgs e)
{
descriptions = (ServiceDescriptionCollection) Context.Items["wsdls"];
schemas = (XmlSchemas) Context.Items["schemas"];
ServiceDescription desc = descriptions [0];
if (schemas.Count == 0) schemas = desc.Types.Schemas;
Service service = desc.Services[0];
WebServiceName = service.Name;
if (desc.Bindings.Count == 0)
return;
DefaultBinding = desc.Bindings[0].Name;
WebServiceDescription = service.Documentation;
if (WebServiceDescription == "" || WebServiceDescription == null)
WebServiceDescription = "Description has not been provided";
ServiceProtocols = FindServiceProtocols (null);
CurrentOperationName = Request.QueryString["op"];
CurrentOperationBinding = Request.QueryString["bnd"];
if (CurrentOperationName != null) BuildOperationInfo ();
PageName = HttpUtility.UrlEncode (Path.GetFileName(Request.Path), Encoding.UTF8);
ArrayList list = new ArrayList ();
foreach (ServiceDescription sd in descriptions) {
foreach (Binding bin in sd.Bindings)
if (bin.Extensions.Find (typeof(SoapBinding)) != null) list.Add (bin);
}
BindingsRepeater.DataSource = list;
Page.DataBind();
ProfileViolations = new BasicProfileViolationCollection ();
foreach (WsiProfilesElement claims in ((WebServicesSection) WebConfigurationManager.GetSection("system.web/webServices")).ConformanceWarnings)
if (claims.Name != WsiProfiles.None)
WebServicesInteroperability.CheckConformance (claims.Name, descriptions, ProfileViolations);
}
void BuildOperationInfo ()
{
InParams = new ArrayList ();
OutParams = new ArrayList ();
Port port = FindPort (CurrentOperationBinding, null);
Binding binding = descriptions.GetBinding (port.Binding);
PortType portType = descriptions.GetPortType (binding.Type);
Operation oper = FindOperation (portType, CurrentOperationName);
OperationDocumentation = oper.Documentation;
if (OperationDocumentation == null || OperationDocumentation == "")
OperationDocumentation = "No additional remarks";
foreach (OperationMessage opm in oper.Messages)
{
if (opm is OperationInput)
BuildParameters (InParams, opm);
else if (opm is OperationOutput)
BuildParameters (OutParams, opm);
}
// Protocols supported by the operation
CurrentOperationProtocols = "";
WebServiceProtocols testProtocols = 0;
ArrayList prots = FindServiceProtocols (CurrentOperationName);
for (int n=0; n<prots.Count; n++) {
string prot = (string) prots [n];
if (n != 0) CurrentOperationProtocols += ", ";
CurrentOperationProtocols += prot;
if (prot == "HttpGet")
testProtocols |= WebServiceProtocols.HttpGet;
else if (prot == "HttpPost") {
testProtocols |= WebServiceProtocols.HttpPost;
if (Context.Request.IsLocal)
testProtocols |= WebServiceProtocols.HttpPostLocalhost;
}
}
CurrentOperationSupportsTest = (WebServicesSection.Current.EnabledProtocols & testProtocols) != 0;
// Operation format
OperationBinding obin = FindOperation (binding, CurrentOperationName);
if (obin != null)
CurrentOperationFormat = GetOperationFormat (obin);
InputParamsRepeater.DataSource = InParams;
InputFormParamsRepeater.DataSource = InParams;
OutputParamsRepeater.DataSource = OutParams;
}
void BuildParameters (ArrayList list, OperationMessage opm)
{
Message msg = descriptions.GetMessage (opm.Message);
if (msg.Parts.Count > 0 && msg.Parts[0].Name == "parameters")
{
MessagePart part = msg.Parts[0];
XmlSchemaComplexType ctype;
if (part.Element == XmlQualifiedName.Empty)
{
ctype = (XmlSchemaComplexType) schemas.Find (part.Type, typeof(XmlSchemaComplexType));
}
else
{
XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (part.Element, typeof(XmlSchemaElement));
ctype = (XmlSchemaComplexType) elem.SchemaType;
}
XmlSchemaSequence seq = ctype.Particle as XmlSchemaSequence;
if (seq == null) return;
foreach (XmlSchemaObject ob in seq.Items)
{
Parameter p = new Parameter();
p.Description = "No additional remarks";
if (ob is XmlSchemaElement)
{
XmlSchemaElement selem = GetRefElement ((XmlSchemaElement)ob);
p.Name = selem.Name;
p.Type = selem.SchemaTypeName.Name;
}
else
{
p.Name = "Unknown";
p.Type = "Unknown";
}
list.Add (p);
}
}
else
{
foreach (MessagePart part in msg.Parts)
{
Parameter p = new Parameter ();
p.Description = "No additional remarks";
p.Name = part.Name;
if (part.Element == XmlQualifiedName.Empty)
p.Type = part.Type.Name;
else
{
XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (part.Element, typeof(XmlSchemaElement));
p.Type = elem.SchemaTypeName.Name;
}
list.Add (p);
}
}
}
string GetOperationFormat (OperationBinding obin)
{
string format = "";
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
if (sob != null) {
format = sob.Style.ToString ();
SoapBodyBinding sbb = obin.Input.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
if (sbb != null)
format += " / " + sbb.Use;
}
return format;
}
XmlSchemaElement GetRefElement (XmlSchemaElement elem)
{
if (!elem.RefName.IsEmpty)
return (XmlSchemaElement) schemas.Find (elem.RefName, typeof(XmlSchemaElement));
else
return elem;
}
ArrayList FindServiceProtocols(string operName)
{
ArrayList table = new ArrayList ();
Service service = descriptions[0].Services[0];
foreach (Port port in service.Ports)
{
string prot = null;
Binding bin = descriptions.GetBinding (port.Binding);
if (bin.Extensions.Find (typeof(SoapBinding)) != null)
prot = "Soap";
else
{
HttpBinding hb = (HttpBinding) bin.Extensions.Find (typeof(HttpBinding));
if (hb != null && hb.Verb == "POST") prot = "HttpPost";
else if (hb != null && hb.Verb == "GET") prot = "HttpGet";
}
if (prot != null && operName != null)
{
if (FindOperation (bin, operName) == null)
prot = null;
}
if (prot != null && !table.Contains (prot))
table.Add (prot);
}
return table;
}
Port FindPort (string portName, string protocol)
{
Service service = descriptions[0].Services[0];
foreach (Port port in service.Ports)
{
if (portName == null)
{
Binding binding = descriptions.GetBinding (port.Binding);
if (GetProtocol (binding) == protocol) return port;
}
else if (port.Name == portName)
return port;
}
return null;
}
string GetProtocol (Binding binding)
{
if (binding.Extensions.Find (typeof(SoapBinding)) != null) return "Soap";
HttpBinding hb = (HttpBinding) binding.Extensions.Find (typeof(HttpBinding));
if (hb == null) return "";
if (hb.Verb == "POST") return "HttpPost";
if (hb.Verb == "GET") return "HttpGet";
return "";
}
Operation FindOperation (PortType portType, string name)
{
foreach (Operation oper in portType.Operations) {
if (oper.Messages.Input.Name != null) {
if (oper.Messages.Input.Name == name) return oper;
}
else
if (oper.Name == name) return oper;
}
return null;
}
OperationBinding FindOperation (Binding binding, string name)
{
foreach (OperationBinding oper in binding.Operations) {
if (oper.Input.Name != null) {
if (oper.Input.Name == name) return oper;
}
else
if (oper.Name == name) return oper;
}
return null;
}
string FormatBindingName (string name)
{
if (name == DefaultBinding) return "Methods";
else return "Methods for binding<br>" + name;
}
string GetOpName (object op)
{
OperationBinding ob = op as OperationBinding;
if (ob == null) return "";
if (ob.Input.Name != null) return ob.Input.Name;
else return ob.Name;
}
bool HasFormResult
{
get { return Request.QueryString ["ext"] == "testform"; }
}
class NoCheckCertificatePolicy : ICertificatePolicy {
public bool CheckValidationResult (ServicePoint a, X509Certificate b, WebRequest c, int d)
{
return true;
}
}
string GetOrPost ()
{
return (CurrentOperationProtocols.IndexOf ("HttpGet") >= 0) ? "GET" : "POST";
}
string GetQS ()
{
bool fill = false;
string qs = "";
NameValueCollection query_string = Request.QueryString;
for (int n = 0; n < query_string.Count; n++) {
if (fill) {
if (qs != "") qs += "&";
qs += query_string.GetKey(n) + "=" + Server.UrlEncode (query_string [n]);
}
if (query_string.GetKey(n) == "ext") fill = true;
}
return qs;
}
string GetTestResultUrl ()
{
if (!HasFormResult) return "";
string location = null;
ServiceDescription desc = descriptions [0];
Service service = desc.Services[0];
foreach (Port port in service.Ports)
if (port.Name == CurrentOperationBinding)
{
SoapAddressBinding sbi = (SoapAddressBinding) port.Extensions.Find (typeof(SoapAddressBinding));
if (sbi != null)
location = sbi.Location;
}
if (location == null)
return "Could not locate web service";
return location + "/" + CurrentOperationName;
}
string GenerateOperationMessages (string protocol, bool generateInput)
{
if (!IsOperationSupported (protocol)) return "";
Port port;
if (protocol != "Soap") port = FindPort (null, protocol);
else port = FindPort (CurrentOperationBinding, null);
Binding binding = descriptions.GetBinding (port.Binding);
OperationBinding obin = FindOperation (binding, CurrentOperationName);
PortType portType = descriptions.GetPortType (binding.Type);
Operation oper = FindOperation (portType, CurrentOperationName);
HtmlSampleGenerator sg = new HtmlSampleGenerator (descriptions, schemas);
string txt = sg.GenerateMessage (port, obin, oper, protocol, generateInput);
if (protocol == "Soap") txt = WrapText (txt,CodeTextColumns);
txt = ColorizeXml (txt);
txt = txt.Replace ("@placeholder!","<span class='literal-placeholder'>");
txt = txt.Replace ("!placeholder@","</span>");
return txt;
}
bool IsOperationSupported (string protocol)
{
if (CurrentPage != "op" || CurrentTab != "msg") return false;
if (protocol == "Soap") return true;
Port port = FindPort (null, protocol);
if (port == null) return false;
Binding binding = descriptions.GetBinding (port.Binding);
if (binding == null) return false;
return FindOperation (binding, CurrentOperationName) != null;
}
//
// Proxy code generation
//
string GetProxyCode ()
{
CodeNamespace codeNamespace = new CodeNamespace();
CodeCompileUnit codeUnit = new CodeCompileUnit();
codeUnit.Namespaces.Add (codeNamespace);
ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
foreach (ServiceDescription sd in descriptions)
importer.AddServiceDescription(sd, null, null);
foreach (XmlSchema sc in schemas)
importer.Schemas.Add (sc);
importer.Import(codeNamespace, codeUnit);
string langId = Request.QueryString ["lang"];
if (langId == null || langId == "") langId = "cs";
CodeDomProvider provider = GetProvider (langId);
ICodeGenerator generator = provider.CreateGenerator();
CodeGeneratorOptions options = new CodeGeneratorOptions();
StringWriter sw = new StringWriter ();
generator.GenerateCodeFromCompileUnit(codeUnit, sw, options);
return Colorize (WrapText (sw.ToString (), CodeTextColumns), langId);
}
public string CurrentLanguage
{
get {
string langId = Request.QueryString ["lang"];
if (langId == null || langId == "") langId = "cs";
return langId;
}
}
public string CurrentProxytName
{
get {
string lan = CurrentLanguage == "cs" ? "C#" : "Visual Basic";
return lan + " Client Proxy";
}
}
private CodeDomProvider GetProvider(string langId)
{
switch (langId.ToUpper())
{
case "CS": return new CSharpCodeProvider();
case "VB": return new VBCodeProvider();
default: return null;
}
}
//
// Document generation
//
class UTF8StringWriter : StringWriter {
public override Encoding Encoding {
get { return Encoding.UTF8; }
}
}
string GenerateDocument ()
{
UTF8StringWriter sw = new UTF8StringWriter ();
if (CurrentDocType == "wsdl")
descriptions [CurrentDocInd].Write (sw);
else if (CurrentDocType == "schema")
schemas [CurrentDocInd].Write (sw);
return Colorize (WrapText (sw.ToString (), CodeTextColumns), "xml");
}
public string CurrentDocType
{
get { return Request.QueryString ["doctype"] != null ? Request.QueryString ["doctype"] : "wsdl"; }
}
public int CurrentDocInd
{
get { return Request.QueryString ["docind"] != null ? int.Parse (Request.QueryString ["docind"]) : 0; }
}
public string CurrentDocumentName
{
get {
if (CurrentDocType == "wsdl")
return "WSDL document for namespace \"" + descriptions [CurrentDocInd].TargetNamespace + "\"";
else
return "Xml Schema for namespace \"" + schemas [CurrentDocInd].TargetNamespace + "\"";
}
}
//
// Pages and tabs
//
bool firstTab = true;
ArrayList disabledTabs = new ArrayList ();
string CurrentTab
{
get { return Request.QueryString["tab"] != null ? Request.QueryString["tab"] : "main" ; }
}
string CurrentPage
{
get { return Request.QueryString["page"] != null ? Request.QueryString["page"] : "main" ; }
}
void WriteTabs ()
{
if (CurrentOperationName != null)
{
WriteTab ("main","Overview");
WriteTab ("test","Test Form");
WriteTab ("msg","Message Layout");
}
}
void WriteTab (string id, string label)
{
if (!firstTab) Response.Write("&nbsp;|&nbsp;");
firstTab = false;
string cname = CurrentTab == id ? "tabLabelOn" : "tabLabelOff";
Response.Write ("<a href='" + PageName + "?" + GetPageContext(null) + GetDataContext() + "tab=" + id + "' style='text-decoration:none'>");
Response.Write ("<span class='" + cname + "'>" + label + "</span>");
Response.Write ("</a>");
}
string GetTabContext (string pag, string tab)
{
if (tab == null) tab = CurrentTab;
if (pag == null) pag = CurrentPage;
if (pag != CurrentPage) tab = "main";
return "page=" + pag + "&tab=" + tab + "&";
}
string GetPageContext (string pag)
{
if (pag == null) pag = CurrentPage;
return "page=" + pag + "&";
}
class Tab
{
public string Id;
public string Label;
}
//
// Syntax coloring
//
static string keywords_cs =
"(\\babstract\\b|\\bevent\\b|\\bnew\\b|\\bstruct\\b|\\bas\\b|\\bexplicit\\b|\\bnull\\b|\\bswitch\\b|\\bbase\\b|\\bextern\\b|" +
"\\bobject\\b|\\bthis\\b|\\bbool\\b|\\bfalse\\b|\\boperator\\b|\\bthrow\\b|\\bbreak\\b|\\bfinally\\b|\\bout\\b|\\btrue\\b|" +
"\\bbyte\\b|\\bfixed\\b|\\boverride\\b|\\btry\\b|\\bcase\\b|\\bfloat\\b|\\bparams\\b|\\btypeof\\b|\\bcatch\\b|\\bfor\\b|" +
"\\bprivate\\b|\\buint\\b|\\bchar\\b|\\bforeach\\b|\\bprotected\\b|\\bulong\\b|\\bchecked\\b|\\bgoto\\b|\\bpublic\\b|" +
"\\bunchecked\\b|\\bclass\\b|\\bif\\b|\\breadonly\\b|\\bunsafe\\b|\\bconst\\b|\\bimplicit\\b|\\bref\\b|\\bushort\\b|" +
"\\bcontinue\\b|\\bin\\b|\\breturn\\b|\\busing\\b|\\bdecimal\\b|\\bint\\b|\\bsbyte\\b|\\bvirtual\\b|\\bdefault\\b|" +
"\\binterface\\b|\\bsealed\\b|\\bvolatile\\b|\\bdelegate\\b|\\binternal\\b|\\bshort\\b|\\bvoid\\b|\\bdo\\b|\\bis\\b|" +
"\\bsizeof\\b|\\bwhile\\b|\\bdouble\\b|\\block\\b|\\bstackalloc\\b|\\belse\\b|\\blong\\b|\\bstatic\\b|\\benum\\b|" +
"\\bnamespace\\b|\\bstring\\b)";
static string keywords_vb =
"(\\bAddHandler\\b|\\bAddressOf\\b|\\bAlias\\b|\\bAnd\\b|\\bAndAlso\\b|\\bAnsi\\b|\\bAs\\b|\\bAssembly\\b|" +
"\\bAuto\\b|\\bBoolean\\b|\\bByRef\\b|\\bByte\\b|\\bByVal\\b|\\bCall\\b|\\bCase\\b|\\bCatch\\b|" +
"\\bCBool\\b|\\bCByte\\b|\\bCChar\\b|\\bCDate\\b|\\bCDec\\b|\\bCDbl\\b|\\bChar\\b|\\bCInt\\b|" +
"\\bClass\\b|\\bCLng\\b|\\bCObj\\b|\\bConst\\b|\\bCShort\\b|\\bCSng\\b|\\bCStr\\b|\\bCType\\b|" +
"\\bDate\\b|\\bDecimal\\b|\\bDeclare\\b|\\bDefault\\b|\\bDelegate\\b|\\bDim\\b|\\bDirectCast\\b|\\bDo\\b|" +
"\\bDouble\\b|\\bEach\\b|\\bElse\\b|\\bElseIf\\b|\\bEnd\\b|\\bEnum\\b|\\bErase\\b|\\bError\\b|" +
"\\bEvent\\b|\\bExit\\b|\\bFalse\\b|\\bFinally\\b|\\bFor\\b|\\bFriend\\b|\\bFunction\\b|\\bGet\\b|" +
"\\bGetType\\b|\\bGoSub\\b|\\bGoTo\\b|\\bHandles\\b|\\bIf\\b|\\bImplements\\b|\\bImports\\b|\\bIn\\b|" +
"\\bInherits\\b|\\bInteger\\b|\\bInterface\\b|\\bIs\\b|\\bLet\\b|\\bLib\\b|\\bLike\\b|\\bLong\\b|" +
"\\bLoop\\b|\\bMe\\b|\\bMod\\b|\\bModule\\b|\\bMustInherit\\b|\\bMustOverride\\b|\\bMyBase\\b|\\bMyClass\\b|" +
"\\bNamespace\\b|\\bNew\\b|\\bNext\\b|\\bNot\\b|\\bNothing\\b|\\bNotInheritable\\b|\\bNotOverridable\\b|\\bObject\\b|" +
"\\bOn\\b|\\bOption\\b|\\bOptional\\b|\\bOr\\b|\\bOrElse\\b|\\bOverloads\\b|\\bOverridable\\b|\\bOverrides\\b|" +
"\\bParamArray\\b|\\bPreserve\\b|\\bPrivate\\b|\\bProperty\\b|\\bProtected\\b|\\bPublic\\b|\\bRaiseEvent\\b|\\bReadOnly\\b|" +
"\\bReDim\\b|\\bREM\\b|\\bRemoveHandler\\b|\\bResume\\b|\\bReturn\\b|\\bSelect\\b|\\bSet\\b|\\bShadows\\b|" +
"\\bShared\\b|\\bShort\\b|\\bSingle\\b|\\bStatic\\b|\\bStep\\b|\\bStop\\b|\\bString\\b|\\bStructure\\b|" +
"\\bSub\\b|\\bSyncLock\\b|\\bThen\\b|\\bThrow\\b|\\bTo\\b|\\bTrue\\b|\\bTry\\b|\\bTypeOf\\b|" +
"\\bUnicode\\b|\\bUntil\\b|\\bVariant\\b|\\bWhen\\b|\\bWhile\\b|\\bWith\\b|\\bWithEvents\\b|\\bWriteOnly\\b|\\bXor\\b)";
string Colorize (string text, string lang)
{
if (lang == "xml") return ColorizeXml (text);
else if (lang == "cs") return ColorizeCs (text);
else if (lang == "vb") return ColorizeVb (text);
else return text;
}
string ColorizeXml (string text)
{
text = text.Replace (" ", "&nbsp;");
Regex re = new Regex ("\r\n|\r|\n");
text = re.Replace (text, "_br_");
re = new Regex ("<\\s*(\\/?)\\s*([\\s\\S]*?)\\s*(\\/?)\\s*>");
text = re.Replace (text,"{blue:&lt;$1}{maroon:$2}{blue:$3&gt;}");
re = new Regex ("\\{(\\w*):([\\s\\S]*?)\\}");
text = re.Replace (text,"<span style='color:$1'>$2</span>");
re = new Regex ("\"(.*?)\"");
text = re.Replace (text,"\"<span style='color:purple'>$1</span>\"");
text = text.Replace ("\t", "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
text = text.Replace ("_br_", "<br>");
return text;
}
string ColorizeCs (string text)
{
text = text.Replace (" ", "&nbsp;");
text = text.Replace ("<", "&lt;");
text = text.Replace (">", "&gt;");
Regex re = new Regex ("\"((((?!\").)|\\\")*?)\"");
text = re.Replace (text,"<span style='color:purple'>\"$1\"</span>");
re = new Regex ("//(((.(?!\"</span>))|\"(((?!\").)*)\"</span>)*)(\r|\n|\r\n)");
text = re.Replace (text,"<span style='color:green'>//$1</span><br/>");
re = new Regex (keywords_cs);
text = re.Replace (text,"<span style='color:blue'>$1</span>");
text = text.Replace ("\t","&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
text = text.Replace ("\n","<br/>");
return text;
}
string ColorizeVb (string text)
{
text = text.Replace (" ", "&nbsp;");
/* Regex re = new Regex ("\"((((?!\").)|\\\")*?)\"");
text = re.Replace (text,"<span style='color:purple'>\"$1\"</span>");
re = new Regex ("'(((.(?!\"\\<\\/span\\>))|\"(((?!\").)*)\"\\<\\/span\\>)*)(\r|\n|\r\n)");
text = re.Replace (text,"<span style='color:green'>//$1</span><br/>");
re = new Regex (keywords_vb);
text = re.Replace (text,"<span style='color:blue'>$1</span>");
*/
text = text.Replace ("\t","&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
text = text.Replace ("\n","<br/>");
return text;
}
//
// Helper methods and classes
//
string GetDataContext ()
{
return "op=" + CurrentOperationName + "&bnd=" + CurrentOperationBinding + "&";
}
string GetOptionSel (string v1, string v2)
{
string op = "<option ";
if (v1 == v2) op += "selected ";
return op + "value='" + v1 + "'>";
}
string WrapText (string text, int maxChars)
{
text = text.Replace(" />","/>");
string linspace = null;
int lincount = 0;
int breakpos = 0;
int linstart = 0;
bool inquotes = false;
char lastc = ' ';
string sublineIndent = "";
System.Text.StringBuilder sb = new System.Text.StringBuilder ();
for (int n=0; n<text.Length; n++)
{
char c = text [n];
if (c=='\r' || c=='\n' || n==text.Length-1)
{
sb.Append (linspace + sublineIndent + text.Substring (linstart, n-linstart+1));
linspace = null;
lincount = 0;
linstart = n+1;
breakpos = linstart;
sublineIndent = "";
lastc = c;
continue;
}
if (lastc==',' || lastc=='(')
{
if (!inquotes) breakpos = n;
}
if (lincount > maxChars && breakpos >= linstart)
{
if (linspace != null)
sb.Append (linspace + sublineIndent);
sb.Append (text.Substring (linstart, breakpos-linstart));
sb.Append ("\n");
sublineIndent = " ";
lincount = linspace.Length + sublineIndent.Length + (n-breakpos);
linstart = breakpos;
}
if (c==' ' || c=='\t')
{
if (!inquotes)
breakpos = n;
}
else if (c=='"')
{
inquotes = !inquotes;
}
else
if (linspace == null) {
linspace = text.Substring (linstart, n-linstart);
linstart = n;
}
lincount++;
lastc = c;
}
return sb.ToString ();
}
class Parameter
{
string name;
string type;
string description;
public string Name { get { return name; } set { name = value; } }
public string Type { get { return type; } set { type = value; } }
public string Description { get { return description; } set { description = value; } }
}
public class HtmlSampleGenerator: SampleGenerator
{
public HtmlSampleGenerator (ServiceDescriptionCollection services, XmlSchemas schemas)
: base (services, schemas)
{
}
protected override string GetLiteral (string s)
{
return "@placeholder!" + s + "!placeholder@";
}
}
public class SampleGenerator
{
protected ServiceDescriptionCollection descriptions;
protected XmlSchemas schemas;
XmlSchemaElement anyElement;
ArrayList queue;
SoapBindingUse currentUse;
XmlDocument document = new XmlDocument ();
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/";
class EncodedType
{
public EncodedType (string ns, XmlSchemaElement elem) { Namespace = ns; Element = elem; }
public string Namespace;
public XmlSchemaElement Element;
}
public SampleGenerator (ServiceDescriptionCollection services, XmlSchemas schemas)
{
descriptions = services;
this.schemas = schemas;
queue = new ArrayList ();
}
public string GenerateMessage (Port port, OperationBinding obin, Operation oper, string protocol, bool generateInput)
{
OperationMessage msg = null;
foreach (OperationMessage opm in oper.Messages)
{
if (opm is OperationInput && generateInput) msg = opm;
else if (opm is OperationOutput && !generateInput) msg = opm;
}
if (msg == null) return null;
switch (protocol) {
case "Soap": return GenerateHttpSoapMessage (port, obin, oper, msg);
case "HttpGet": return GenerateHttpGetMessage (port, obin, oper, msg);
case "HttpPost": return GenerateHttpPostMessage (port, obin, oper, msg);
}
return "Unknown protocol";
}
public string GenerateHttpSoapMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
{
string req = "";
if (msg is OperationInput)
{
SoapAddressBinding sab = port.Extensions.Find (typeof(SoapAddressBinding)) as SoapAddressBinding;
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
req += "POST " + new Uri (sab.Location).AbsolutePath + "\n";
req += "SOAPAction: " + sob.SoapAction + "\n";
req += "Content-Type: text/xml; charset=utf-8\n";
req += "Content-Length: " + GetLiteral ("string") + "\n";
req += "Host: " + GetLiteral ("string") + "\n\n";
}
else
{
req += "HTTP/1.0 200 OK\n";
req += "Content-Type: text/xml; charset=utf-8\n";
req += "Content-Length: " + GetLiteral ("string") + "\n\n";
}
req += GenerateSoapMessage (obin, oper, msg);
return req;
}
public string GenerateHttpGetMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
{
string req = "";
if (msg is OperationInput)
{
HttpAddressBinding sab = port.Extensions.Find (typeof(HttpAddressBinding)) as HttpAddressBinding;
HttpOperationBinding sob = obin.Extensions.Find (typeof(HttpOperationBinding)) as HttpOperationBinding;
string location = new Uri (sab.Location).AbsolutePath + sob.Location + "?" + BuildQueryString (msg);
req += "GET " + location + "\n";
req += "Host: " + GetLiteral ("string");
}
else
{
req += "HTTP/1.0 200 OK\n";
req += "Content-Type: text/xml; charset=utf-8\n";
req += "Content-Length: " + GetLiteral ("string") + "\n\n";
MimeXmlBinding mxb = (MimeXmlBinding) obin.Output.Extensions.Find (typeof(MimeXmlBinding)) as MimeXmlBinding;
if (mxb == null) return req;
Message message = descriptions.GetMessage (msg.Message);
XmlQualifiedName ename = null;
foreach (MessagePart part in message.Parts)
if (part.Name == mxb.Part) ename = part.Element;
if (ename == null) return req + GetLiteral("string");
StringWriter sw = new StringWriter ();
XmlTextWriter xtw = new XmlTextWriter (sw);
xtw.Formatting = Formatting.Indented;
currentUse = SoapBindingUse.Literal;
WriteRootElementSample (xtw, ename);
xtw.Close ();
req += sw.ToString ();
}
return req;
}
public string GenerateHttpPostMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
{
string req = "";
if (msg is OperationInput)
{
HttpAddressBinding sab = port.Extensions.Find (typeof(HttpAddressBinding)) as HttpAddressBinding;
HttpOperationBinding sob = obin.Extensions.Find (typeof(HttpOperationBinding)) as HttpOperationBinding;
string location = new Uri (sab.Location).AbsolutePath + sob.Location;
req += "POST " + location + "\n";
req += "Content-Type: application/x-www-form-urlencoded\n";
req += "Content-Length: " + GetLiteral ("string") + "\n";
req += "Host: " + GetLiteral ("string") + "\n\n";
req += BuildQueryString (msg);
}
else return GenerateHttpGetMessage (port, obin, oper, msg);
return req;
}
string BuildQueryString (OperationMessage opm)
{
string s = "";
Message msg = descriptions.GetMessage (opm.Message);
foreach (MessagePart part in msg.Parts)
{
if (s.Length != 0) s += "&";
s += part.Name + "=" + GetLiteral (part.Type.Name);
}
return s;
}
public string GenerateSoapMessage (OperationBinding obin, Operation oper, OperationMessage msg)
{
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
SoapBindingStyle style = (sob != null) ? sob.Style : SoapBindingStyle.Document;
MessageBinding msgbin = (msg is OperationInput) ? (MessageBinding) obin.Input : (MessageBinding)obin.Output;
SoapBodyBinding sbb = msgbin.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
SoapBindingUse bodyUse = (sbb != null) ? sbb.Use : SoapBindingUse.Literal;
StringWriter sw = new StringWriter ();
XmlTextWriter xtw = new XmlTextWriter (sw);
xtw.Formatting = Formatting.Indented;
xtw.WriteStartDocument ();
xtw.WriteStartElement ("soap", "Envelope", SoapEnvelopeNamespace);
xtw.WriteAttributeString ("xmlns", "xsi", null, XmlSchema.InstanceNamespace);
xtw.WriteAttributeString ("xmlns", "xsd", null, XmlSchema.Namespace);
if (bodyUse == SoapBindingUse.Encoded)
{
xtw.WriteAttributeString ("xmlns", "soapenc", null, SoapEncodingNamespace);
xtw.WriteAttributeString ("xmlns", "tns", null, msg.Message.Namespace);
}
// Serialize headers
bool writtenHeader = false;
foreach (object ob in msgbin.Extensions)
{
SoapHeaderBinding hb = ob as SoapHeaderBinding;
if (hb == null) continue;
if (!writtenHeader) {
xtw.WriteStartElement ("soap", "Header", SoapEnvelopeNamespace);
writtenHeader = true;
}
WriteHeader (xtw, hb);
}
if (writtenHeader)
xtw.WriteEndElement ();
// Serialize body
xtw.WriteStartElement ("soap", "Body", SoapEnvelopeNamespace);
currentUse = bodyUse;
WriteBody (xtw, oper, msg, sbb, style);
xtw.WriteEndElement ();
xtw.WriteEndElement ();
xtw.Close ();
return sw.ToString ();
}
void WriteHeader (XmlTextWriter xtw, SoapHeaderBinding header)
{
Message msg = descriptions.GetMessage (header.Message);
if (msg == null) throw new InvalidOperationException ("Message " + header.Message + " not found");
MessagePart part = msg.Parts [header.Part];
if (part == null) throw new InvalidOperationException ("Message part " + header.Part + " not found in message " + header.Message);
currentUse = header.Use;
if (currentUse == SoapBindingUse.Literal)
WriteRootElementSample (xtw, part.Element);
else
WriteTypeSample (xtw, part.Type);
}
void WriteBody (XmlTextWriter xtw, Operation oper, OperationMessage opm, SoapBodyBinding sbb, SoapBindingStyle style)
{
Message msg = descriptions.GetMessage (opm.Message);
if (msg.Parts.Count > 0 && msg.Parts[0].Name == "parameters")
{
MessagePart part = msg.Parts[0];
if (part.Element == XmlQualifiedName.Empty)
WriteTypeSample (xtw, part.Type);
else
WriteRootElementSample (xtw, part.Element);
}
else
{
string elemName = oper.Name;
string ns = "";
if (opm is OperationOutput) elemName += "Response";
if (style == SoapBindingStyle.Rpc) {
xtw.WriteStartElement (elemName, sbb.Namespace);
ns = sbb.Namespace;
}
foreach (MessagePart part in msg.Parts)
{
if (part.Element == XmlQualifiedName.Empty)
{
XmlSchemaElement elem = new XmlSchemaElement ();
elem.SchemaTypeName = part.Type;
elem.Name = part.Name;
WriteElementSample (xtw, ns, elem);
}
else
WriteRootElementSample (xtw, part.Element);
}
if (style == SoapBindingStyle.Rpc)
xtw.WriteEndElement ();
}
WriteQueuedTypeSamples (xtw);
}
void WriteRootElementSample (XmlTextWriter xtw, XmlQualifiedName qname)
{
XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (qname, typeof(XmlSchemaElement));
if (elem == null) throw new InvalidOperationException ("Element not found: " + qname);
WriteElementSample (xtw, qname.Namespace, elem);
}
void WriteElementSample (XmlTextWriter xtw, string ns, XmlSchemaElement elem)
{
bool sharedAnnType = false;
XmlQualifiedName root;
if (!elem.RefName.IsEmpty) {
XmlSchemaElement refElem = FindRefElement (elem);
if (refElem == null) throw new InvalidOperationException ("Global element not found: " + elem.RefName);
root = elem.RefName;
elem = refElem;
sharedAnnType = true;
}
else
root = new XmlQualifiedName (elem.Name, ns);
if (!elem.SchemaTypeName.IsEmpty)
{
XmlSchemaComplexType st = FindComplexTyype (elem.SchemaTypeName);
if (st != null)
WriteComplexTypeSample (xtw, st, root);
else
{
xtw.WriteStartElement (root.Name, root.Namespace);
if (currentUse == SoapBindingUse.Encoded)
xtw.WriteAttributeString ("type", XmlSchema.InstanceNamespace, GetQualifiedNameString (xtw, elem.SchemaTypeName));
xtw.WriteString (GetLiteral (FindBuiltInType (elem.SchemaTypeName)));
xtw.WriteEndElement ();
}
}
else if (elem.SchemaType == null)
{
xtw.WriteStartElement ("any");
xtw.WriteEndElement ();
}
else
WriteComplexTypeSample (xtw, (XmlSchemaComplexType) elem.SchemaType, root);
}
void WriteTypeSample (XmlTextWriter xtw, XmlQualifiedName qname)
{
XmlSchemaComplexType ctype = FindComplexTyype (qname);
if (ctype != null) {
WriteComplexTypeSample (xtw, ctype, qname);
return;
}
XmlSchemaSimpleType stype = (XmlSchemaSimpleType) schemas.Find (qname, typeof(XmlSchemaSimpleType));
if (stype != null) {
WriteSimpleTypeSample (xtw, stype);
return;
}
xtw.WriteString (GetLiteral (FindBuiltInType (qname)));
throw new InvalidOperationException ("Type not found: " + qname);
}
void WriteComplexTypeSample (XmlTextWriter xtw, XmlSchemaComplexType stype, XmlQualifiedName rootName)
{
WriteComplexTypeSample (xtw, stype, rootName, -1);
}
void WriteComplexTypeSample (XmlTextWriter xtw, XmlSchemaComplexType stype, XmlQualifiedName rootName, int id)
{
string ns = rootName.Namespace;
if (rootName.Name.IndexOf ("[]") != -1) rootName = arrayType;
if (currentUse == SoapBindingUse.Encoded) {
string pref = xtw.LookupPrefix (rootName.Namespace);
if (pref == null) pref = "q1";
xtw.WriteStartElement (pref, rootName.Name, rootName.Namespace);
ns = "";
}
else
xtw.WriteStartElement (rootName.Name, rootName.Namespace);
if (id != -1)
{
xtw.WriteAttributeString ("id", "id" + id);
if (rootName != arrayType)
xtw.WriteAttributeString ("type", XmlSchema.InstanceNamespace, GetQualifiedNameString (xtw, rootName));
}
WriteComplexTypeAttributes (xtw, stype);
WriteComplexTypeElements (xtw, ns, stype);
xtw.WriteEndElement ();
}
void WriteComplexTypeAttributes (XmlTextWriter xtw, XmlSchemaComplexType stype)
{
WriteAttributes (xtw, stype.Attributes, stype.AnyAttribute);
}
Dictionary<XmlSchemaComplexType,int> recursed_types = new Dictionary<XmlSchemaComplexType,int> ();
void WriteComplexTypeElements (XmlTextWriter xtw, string ns, XmlSchemaComplexType stype)
{
int prev = 0;
if (recursed_types.ContainsKey (stype))
prev = recursed_types [stype];
if (prev > 1)
return;
recursed_types [stype] = ++prev;
if (stype.Particle != null)
WriteParticleComplexContent (xtw, ns, stype.Particle);
else
{
if (stype.ContentModel is XmlSchemaSimpleContent)
WriteSimpleContent (xtw, (XmlSchemaSimpleContent)stype.ContentModel);
else if (stype.ContentModel is XmlSchemaComplexContent)
WriteComplexContent (xtw, ns, (XmlSchemaComplexContent)stype.ContentModel);
}
prev = recursed_types [stype];
recursed_types [stype] = --prev;
}
void WriteAttributes (XmlTextWriter xtw, XmlSchemaObjectCollection atts, XmlSchemaAnyAttribute anyat)
{
foreach (XmlSchemaObject at in atts)
{
if (at is XmlSchemaAttribute)
{
string ns;
XmlSchemaAttribute attr = (XmlSchemaAttribute)at;
XmlSchemaAttribute refAttr = attr;
// refAttr.Form; TODO
if (!attr.RefName.IsEmpty) {
refAttr = FindRefAttribute (attr.RefName);
if (refAttr == null) throw new InvalidOperationException ("Global attribute not found: " + attr.RefName);
}
string val;
if (!refAttr.SchemaTypeName.IsEmpty) val = FindBuiltInType (refAttr.SchemaTypeName);
else val = FindBuiltInType ((XmlSchemaSimpleType) refAttr.SchemaType);
xtw.WriteAttributeString (refAttr.Name, val);
}
else if (at is XmlSchemaAttributeGroupRef)
{
XmlSchemaAttributeGroupRef gref = (XmlSchemaAttributeGroupRef)at;
XmlSchemaAttributeGroup grp = (XmlSchemaAttributeGroup) schemas.Find (gref.RefName, typeof(XmlSchemaAttributeGroup));
WriteAttributes (xtw, grp.Attributes, grp.AnyAttribute);
}
}
if (anyat != null)
xtw.WriteAttributeString ("custom-attribute","value");
}
void WriteParticleComplexContent (XmlTextWriter xtw, string ns, XmlSchemaParticle particle)
{
WriteParticleContent (xtw, ns, particle, false);
}
void WriteParticleContent (XmlTextWriter xtw, string ns, XmlSchemaParticle particle, bool multiValue)
{
if (particle is XmlSchemaGroupRef)
particle = GetRefGroupParticle ((XmlSchemaGroupRef)particle);
if (particle.MaxOccurs > 1) multiValue = true;
if (particle is XmlSchemaSequence) {
WriteSequenceContent (xtw, ns, ((XmlSchemaSequence)particle).Items, multiValue);
}
else if (particle is XmlSchemaChoice) {
if (((XmlSchemaChoice)particle).Items.Count == 1)
WriteSequenceContent (xtw, ns, ((XmlSchemaChoice)particle).Items, multiValue);
else
WriteChoiceContent (xtw, ns, (XmlSchemaChoice)particle, multiValue);
}
else if (particle is XmlSchemaAll) {
WriteSequenceContent (xtw, ns, ((XmlSchemaAll)particle).Items, multiValue);
}
}
void WriteSequenceContent (XmlTextWriter xtw, string ns, XmlSchemaObjectCollection items, bool multiValue)
{
foreach (XmlSchemaObject item in items)
WriteContentItem (xtw, ns, item, multiValue);
}
void WriteContentItem (XmlTextWriter xtw, string ns, XmlSchemaObject item, bool multiValue)
{
if (item is XmlSchemaGroupRef)
item = GetRefGroupParticle ((XmlSchemaGroupRef)item);
if (item is XmlSchemaElement)
{
XmlSchemaElement elem = (XmlSchemaElement) item;
XmlSchemaElement refElem;
if (!elem.RefName.IsEmpty) refElem = FindRefElement (elem);
else refElem = elem;
int num = (elem.MaxOccurs == 1 && !multiValue) ? 1 : 2;
for (int n=0; n<num; n++)
{
if (currentUse == SoapBindingUse.Literal)
WriteElementSample (xtw, ns, refElem);
else
WriteRefTypeSample (xtw, ns, refElem);
}
}
else if (item is XmlSchemaAny)
{
xtw.WriteString (GetLiteral ("xml"));
}
else if (item is XmlSchemaParticle) {
WriteParticleContent (xtw, ns, (XmlSchemaParticle)item, multiValue);
}
}
void WriteChoiceContent (XmlTextWriter xtw, string ns, XmlSchemaChoice choice, bool multiValue)
{
foreach (XmlSchemaObject item in choice.Items)
WriteContentItem (xtw, ns, item, multiValue);
}
void WriteSimpleContent (XmlTextWriter xtw, XmlSchemaSimpleContent content)
{
XmlSchemaSimpleContentExtension ext = content.Content as XmlSchemaSimpleContentExtension;
if (ext != null)
WriteAttributes (xtw, ext.Attributes, ext.AnyAttribute);
XmlQualifiedName qname = GetContentBaseType (content.Content);
xtw.WriteString (GetLiteral (FindBuiltInType (qname)));
}
string FindBuiltInType (XmlQualifiedName qname)
{
if (qname.Namespace == XmlSchema.Namespace)
return qname.Name;
XmlSchemaComplexType ct = FindComplexTyype (qname);
if (ct != null)
{
XmlSchemaSimpleContent sc = ct.ContentModel as XmlSchemaSimpleContent;
if (sc == null) throw new InvalidOperationException ("Invalid schema");
return FindBuiltInType (GetContentBaseType (sc.Content));
}
XmlSchemaSimpleType st = (XmlSchemaSimpleType) schemas.Find (qname, typeof(XmlSchemaSimpleType));
if (st != null)
return FindBuiltInType (st);
throw new InvalidOperationException ("Definition of type " + qname + " not found");
}
string FindBuiltInType (XmlSchemaSimpleType st)
{
if (st.Content is XmlSchemaSimpleTypeRestriction) {
return FindBuiltInType (GetContentBaseType (st.Content));
}
else if (st.Content is XmlSchemaSimpleTypeList) {
string s = FindBuiltInType (GetContentBaseType (st.Content));
return s + " " + s + " ...";
}
else if (st.Content is XmlSchemaSimpleTypeUnion)
{
//Check if all types of the union are equal. If not, then will use anyType.
XmlSchemaSimpleTypeUnion uni = (XmlSchemaSimpleTypeUnion) st.Content;
string utype = null;
// Anonymous types are unique
if (uni.BaseTypes.Count != 0 && uni.MemberTypes.Length != 0)
return "string";
foreach (XmlQualifiedName mt in uni.MemberTypes)
{
string qn = FindBuiltInType (mt);
if (utype != null && qn != utype) return "string";
else utype = qn;
}
return utype;
}
else
return "string";
}
XmlQualifiedName GetContentBaseType (XmlSchemaObject ob)
{
if (ob is XmlSchemaSimpleContentExtension)
return ((XmlSchemaSimpleContentExtension)ob).BaseTypeName;
else if (ob is XmlSchemaSimpleContentRestriction)
return ((XmlSchemaSimpleContentRestriction)ob).BaseTypeName;
else if (ob is XmlSchemaSimpleTypeRestriction)
return ((XmlSchemaSimpleTypeRestriction)ob).BaseTypeName;
else if (ob is XmlSchemaSimpleTypeList)
return ((XmlSchemaSimpleTypeList)ob).ItemTypeName;
else
return null;
}
void WriteComplexContent (XmlTextWriter xtw, string ns, XmlSchemaComplexContent content)
{
XmlQualifiedName qname;
XmlSchemaComplexContentExtension ext = content.Content as XmlSchemaComplexContentExtension;
if (ext != null) qname = ext.BaseTypeName;
else {
XmlSchemaComplexContentRestriction rest = (XmlSchemaComplexContentRestriction)content.Content;
qname = rest.BaseTypeName;
if (qname == arrayType) {
ParseArrayType (rest, out qname);
XmlSchemaElement elem = new XmlSchemaElement ();
elem.Name = "Item";
elem.SchemaTypeName = qname;
xtw.WriteAttributeString ("arrayType", SoapEncodingNamespace, qname.Name + "[2]");
WriteContentItem (xtw, ns, elem, true);
return;
}
}
// Add base map members to this map
XmlSchemaComplexType ctype = FindComplexTyype (qname);
WriteComplexTypeAttributes (xtw, ctype);
if (ext != null) {
// Add the members of this map
WriteAttributes (xtw, ext.Attributes, ext.AnyAttribute);
if (ext.Particle != null)
WriteParticleComplexContent (xtw, ns, ext.Particle);
}
WriteComplexTypeElements (xtw, ns, ctype);
}
void ParseArrayType (XmlSchemaComplexContentRestriction rest, out XmlQualifiedName qtype)
{
XmlSchemaAttribute arrayTypeAt = FindArrayAttribute (rest.Attributes);
XmlAttribute[] uatts = arrayTypeAt.UnhandledAttributes;
if (uatts == null || uatts.Length == 0) throw new InvalidOperationException ("arrayType attribute not specified in array declaration");
XmlAttribute xat = null;
foreach (XmlAttribute at in uatts)
if (at.LocalName == "arrayType" && at.NamespaceURI == WsdlNamespace)
{ xat = at; break; }
if (xat == null)
throw new InvalidOperationException ("arrayType attribute not specified in array declaration");
string arrayType = xat.Value;
string type, ns;
int i = arrayType.LastIndexOf (":");
if (i == -1) ns = "";
else ns = arrayType.Substring (0,i);
int j = arrayType.IndexOf ("[", i+1);
if (j == -1) throw new InvalidOperationException ("Cannot parse WSDL array type: " + arrayType);
type = arrayType.Substring (i+1);
type = type.Substring (0, type.Length-2);
qtype = new XmlQualifiedName (type, ns);
}
XmlSchemaAttribute FindArrayAttribute (XmlSchemaObjectCollection atts)
{
foreach (object ob in atts)
{
XmlSchemaAttribute att = ob as XmlSchemaAttribute;
if (att != null && att.RefName == arrayTypeRefName) return att;
XmlSchemaAttributeGroupRef gref = ob as XmlSchemaAttributeGroupRef;
if (gref != null)
{
XmlSchemaAttributeGroup grp = (XmlSchemaAttributeGroup) schemas.Find (gref.RefName, typeof(XmlSchemaAttributeGroup));
att = FindArrayAttribute (grp.Attributes);
if (att != null) return att;
}
}
return null;
}
void WriteSimpleTypeSample (XmlTextWriter xtw, XmlSchemaSimpleType stype)
{
xtw.WriteString (GetLiteral (FindBuiltInType (stype)));
}
XmlSchemaParticle GetRefGroupParticle (XmlSchemaGroupRef refGroup)
{
XmlSchemaGroup grp = (XmlSchemaGroup) schemas.Find (refGroup.RefName, typeof (XmlSchemaGroup));
return grp.Particle;
}
XmlSchemaElement FindRefElement (XmlSchemaElement elem)
{
if (elem.RefName.Namespace == XmlSchema.Namespace)
{
if (anyElement != null) return anyElement;
anyElement = new XmlSchemaElement ();
anyElement.Name = "any";
anyElement.SchemaTypeName = anyType;
return anyElement;
}
return (XmlSchemaElement) schemas.Find (elem.RefName, typeof(XmlSchemaElement));
}
XmlSchemaAttribute FindRefAttribute (XmlQualifiedName refName)
{
if (refName.Namespace == XmlSchema.Namespace)
{
XmlSchemaAttribute at = new XmlSchemaAttribute ();
at.Name = refName.Name;
at.SchemaTypeName = new XmlQualifiedName ("string",XmlSchema.Namespace);
return at;
}
return (XmlSchemaAttribute) schemas.Find (refName, typeof(XmlSchemaAttribute));
}
void WriteRefTypeSample (XmlTextWriter xtw, string ns, XmlSchemaElement elem)
{
if (elem.SchemaTypeName.Namespace == XmlSchema.Namespace || schemas.Find (elem.SchemaTypeName, typeof(XmlSchemaSimpleType)) != null)
WriteElementSample (xtw, ns, elem);
else
{
xtw.WriteStartElement (elem.Name, ns);
xtw.WriteAttributeString ("href", "#id" + (queue.Count+1));
xtw.WriteEndElement ();
queue.Add (new EncodedType (ns, elem));
}
}
void WriteQueuedTypeSamples (XmlTextWriter xtw)
{
for (int n=0; n<queue.Count; n++)
{
EncodedType ec = (EncodedType) queue[n];
XmlSchemaComplexType st = FindComplexTyype (ec.Element.SchemaTypeName);
WriteComplexTypeSample (xtw, st, ec.Element.SchemaTypeName, n+1);
}
}
XmlSchemaComplexType FindComplexTyype (XmlQualifiedName qname)
{
if (qname.Name.IndexOf ("[]") != -1)
{
XmlSchemaComplexType stype = new XmlSchemaComplexType ();
stype.ContentModel = new XmlSchemaComplexContent ();
XmlSchemaComplexContentRestriction res = new XmlSchemaComplexContentRestriction ();
stype.ContentModel.Content = res;
res.BaseTypeName = arrayType;
XmlSchemaAttribute att = new XmlSchemaAttribute ();
att.RefName = arrayTypeRefName;
res.Attributes.Add (att);
XmlAttribute xat = document.CreateAttribute ("arrayType", WsdlNamespace);
xat.Value = qname.Namespace + ":" + qname.Name;
att.UnhandledAttributes = new XmlAttribute[] {xat};
return stype;
}
return (XmlSchemaComplexType) schemas.Find (qname, typeof(XmlSchemaComplexType));
}
string GetQualifiedNameString (XmlTextWriter xtw, XmlQualifiedName qname)
{
string pref = xtw.LookupPrefix (qname.Namespace);
if (pref != null) return pref + ":" + qname.Name;
xtw.WriteAttributeString ("xmlns", "q1", null, qname.Namespace);
return "q1:" + qname.Name;
}
protected virtual string GetLiteral (string s)
{
return s;
}
void GetOperationFormat (OperationBinding obin, out SoapBindingStyle style, out SoapBindingUse use)
{
style = SoapBindingStyle.Document;
use = SoapBindingUse.Literal;
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
if (sob != null) {
style = sob.Style;
SoapBodyBinding sbb = obin.Input.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
if (sbb != null)
use = sbb.Use;
}
}
}
</script>
<head runat="server">
<%
Response.Write ("<link rel=\"alternate\" type=\"text/xml\" href=\"" + Request.FilePath + "?disco\"/>");
%>
<title><%=WebServiceName%> Web Service</title>
<style type="text/css">
BODY { font-family: Arial; margin-left: 20px; margin-top: 20px; font-size: x-small}
TABLE { font-size: x-small }
.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 }
.label { font-size: small; font-weight:bold; color:darkgray }
.paramTable { font-size: x-small }
.paramTable TR { background-color: gainsboro }
.paramFormTable { font-size: x-small; padding: 10px; background-color: gainsboro }
.paramFormTable TR { background-color: gainsboro }
.paramInput { border: solid 1px gray }
.button {border: solid 1px gray }
.smallSeparator { height:3px; overflow:hidden }
.panel { background-color:whitesmoke; border: solid 1px silver; border-top: solid 1px silver }
.codePanel { background-color: white; font-size:x-small; padding:7px; border:solid 1px silver}
.code-xml { font-size:10pt; font-family:courier }
.code-cs { font-size:10pt; font-family:courier }
.code-vb { font-size:10pt; font-family:courier }
.tabLabelOn { font-weight:bold }
.tabLabelOff {color: darkgray }
.literal-placeholder {color: darkblue; font-weight:bold}
A:link { color: black; }
A:visited { color: black; }
A:active { color: black; }
A:hover { color: blue }
</style>
<script language="javascript" type="text/javascript">
var req;
function getXML (command, url, qs) {
if (url == "" || url.substring (0, 4) != "http")
return;
var post_data = null;
req = getReq ();
req.onreadystatechange = stateChange;
if (command == "GET") {
url = url + "?" + qs;
} else {
post_data = qs;
}
req.open (command, url, true);
if (command == "POST")
req.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
req.send (post_data);
}
function stateChange () {
if (req.readyState == 4) {
var node = document.getElementById("testresult_div");
var text = "";
if (req.status == 200) {
node.innerHTML = "<div class='code-xml'>" + formatXml (req.responseText) + "</div>";
} else {
var ht = "<b style='color: red'>" + formatXml (req.status + " - " + req.statusText) + "</b>";
if (req.responseText != "")
ht = ht + "\n<div class='code-xml'>" + formatXml (req.responseText) + "</div>";
node.innerHTML = ht;
}
}
}
function formatXml (text)
{
var re = / /g;
text = text.replace (re, "&nbsp;");
re = /\t/g;
text = text.replace (re, "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
re = /\<\s*(\/?)\s*(.*?)\s*(\/?)\s*\>/g;
text = text.replace (re,"{blue:&lt;$1}{maroon:$2}{blue:$3&gt;}");
re = /{(\w*):(.*?)}/g;
text = text.replace (re,"<span style='color:$1'>$2</span>");
re = /"(.*?)"/g;
text = text.replace (re,"\"<span style='color:purple'>$1</span>\"");
re = /\r\n|\r|\n/g;
text = text.replace (re, "<br/>");
return text;
}
function getReq () {
if (window.XMLHttpRequest) {
return new XMLHttpRequest(); // Firefox, Safari, ...
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
function clearForm ()
{
document.getElementById("testFormResult").style.display="none";
}
</script>
</head>
<body>
<div class="title" style="margin-left:20px">
<span class="label">Web Service</span><br>
<%=WebServiceName%>
</div>
<!--
**********************************************************
Left panel
-->
<table border="0" width="100%" cellpadding="15px" cellspacing="15px">
<tr valign="top"><td width="150px" class="panel">
<div style="width:150px"></div>
<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 name="itemtemplate">
<span class="bindingLabel"><%#FormatBindingName(DataBinder.Eval(Container.DataItem, "Name").ToString())%></span>
<asp:repeater id="OperationsRepeater" runat=server datasource='<%# ((Binding)Container.DataItem).Operations %>'>
<itemtemplate>
<a class="method" href="<%=PageName%>?<%=GetTabContext("op",null)%>op=<%#GetOpName(Container.DataItem)%>&bnd=<%#DataBinder.Eval(Container.DataItem, "Binding.Name")%>"><%#GetOpName(Container.DataItem)%></a>
<div class="smallSeparator"></div>
</itemtemplate>
</asp:repeater>
<br>
</itemtemplate>
</asp:repeater>
</td><td class="panel">
<% if (CurrentPage == "main") {%>
<!--
**********************************************************
Web service overview
-->
<p class="label">Web Service Overview</p>
<%=WebServiceDescription%>
<br/><br/>
<% if (ProfileViolations != null && ProfileViolations.Count > 0) { %>
<p class="label">Basic Profile Conformance</p>
This web service does not conform to WS-I Basic Profile v1.1
<%
Response.Write ("<ul>");
foreach (BasicProfileViolation vio in ProfileViolations) {
Response.Write ("<li><b>" + vio.NormativeStatement + "</b>: " + vio.Details);
Response.Write ("<ul>");
foreach (string ele in vio.Elements)
Response.Write ("<li>" + ele + "</li>");
Response.Write ("</ul>");
Response.Write ("</li>");
}
Response.Write ("</ul>");
}%>
<%} if (DefaultBinding == null) {%>
This service does not contain any public web method.
<%} else if (CurrentPage == "op") {%>
<!--
**********************************************************
Operation description
-->
<span class="operationTitle"><%=CurrentOperationName%></span>
<br><br>
<% WriteTabs (); %>
<br><br><br>
<% if (CurrentTab == "main") { %>
<span class="label">Input Parameters</span>
<div class="smallSeparator"></div>
<% if (InParams.Count == 0) { %>
No input parameters<br>
<% } else { %>
<table class="paramTable" cellspacing="1" cellpadding="5">
<asp:repeater id="InputParamsRepeater" runat=server>
<itemtemplate>
<tr>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Name")%></td>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Type")%></td>
</tr>
</itemtemplate>
</asp:repeater>
</table>
<% } %>
<br>
<% if (OutParams.Count > 0) { %>
<span class="label">Output Parameters</span>
<div class="smallSeparator"></div>
<table class="paramTable" cellspacing="1" cellpadding="5">
<asp:repeater id="OutputParamsRepeater" runat=server>
<itemtemplate>
<tr>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Name")%></td>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Type")%></td>
</tr>
</itemtemplate>
</asp:repeater>
</table>
<br>
<% } %>
<span class="label">Remarks</span>
<div class="smallSeparator"></div>
<%=OperationDocumentation%>
<br><br>
<span class="label">Technical information</span>
<div class="smallSeparator"></div>
Format: <%=CurrentOperationFormat%>
<br>Supported protocols: <%=CurrentOperationProtocols%>
<% } %>
<!--
**********************************************************
Operation description - Test form
-->
<% if (CurrentTab == "test") {
if (CurrentOperationSupportsTest) {%>
Enter values for the parameters and click the 'Invoke' button to test this method:<br><br>
<form action="<%=PageName%>" method="GET">
<input type="hidden" name="page" value="<%=CurrentPage%>">
<input type="hidden" name="tab" value="<%=CurrentTab%>">
<input type="hidden" name="op" value="<%=CurrentOperationName%>">
<input type="hidden" name="bnd" value="<%=CurrentOperationBinding%>">
<input type="hidden" name="ext" value="testform">
<table class="paramFormTable" cellspacing="0" cellpadding="3">
<asp:repeater id="InputFormParamsRepeater" runat=server>
<itemtemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem, "Name")%>:&nbsp;</td>
<td width="150"><input class="paramInput" type="text" size="20" name="<%#DataBinder.Eval(Container.DataItem, "Name")%>"></td>
</tr>
</itemtemplate>
</asp:repeater>
<tr><td></td><td><input class="button" type="submit" value="Invoke">&nbsp;<input class="button" type="button" onclick="clearForm()" value="Clear"></td></tr>
</table>
</form>
<div id="testFormResult" style="display:<%= (HasFormResult?"block":"none") %>">
The web service returned the following result:<br/><br/>
<div class="codePanel" id="testresult_div">
</div>
<script language="javascript">
getXML ("<%= GetOrPost () %>", "<%= GetTestResultUrl () %>", "<%= GetQS () %>");
</script>
</div>
<% } else {%>
The test form is not available for this operation because it has parameters with a complex structure.
<% } %>
<% } %>
<!--
**********************************************************
Operation description - Message Layout
-->
<% if (CurrentTab == "msg") { %>
The following are sample SOAP requests and responses for each protocol supported by this method:
<br/><br/>
<% if (IsOperationSupported ("Soap")) { %>
<span class="label">Soap</span>
<br/><br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("Soap", true)%></div></div>
<br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("Soap", false)%></div></div>
<br/>
<% } %>
<% if (IsOperationSupported ("HttpGet")) { %>
<span class="label">HTTP Get</span>
<br/><br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpGet", true)%></div></div>
<br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpGet", false)%></div></div>
<br/>
<% } %>
<% if (IsOperationSupported ("HttpPost")) { %>
<span class="label">HTTP Post</span>
<br/><br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpPost", true)%></div></div>
<br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpPost", false)%></div></div>
<br/>
<% } %>
<% } %>
<%} else if (CurrentPage == "proxy") {%>
<!--
**********************************************************
Client Proxy
-->
<form action="<%=PageName%>" name="langForm" method="GET">
Select the language for which you want to generate a proxy
<input type="hidden" name="page" value="<%=CurrentPage%>">&nbsp;
<SELECT name="lang" onchange="langForm.submit()">
<%=GetOptionSel("cs",CurrentLanguage)%>C#</option>
<%=GetOptionSel("vb",CurrentLanguage)%>Visual Basic</option>
</SELECT>
&nbsp;&nbsp;
</form>
<br>
<span class="label"><%=CurrentProxytName%></span>&nbsp;&nbsp;&nbsp;
<a href="<%=PageName + "?code=" + CurrentLanguage%>">Download</a>
<br><br>
<div class="codePanel">
<div class="code-<%=CurrentLanguage%>"><%=GetProxyCode ()%></div>
</div>
<%} else if (CurrentPage == "wsdl") {%>
<!--
**********************************************************
Service description
-->
<% if (descriptions.Count > 1 || schemas.Count > 1) {%>
The description of this web service is composed by several documents. Click on the document you want to see:
<ul>
<%
for (int n=0; n<descriptions.Count; n++)
Response.Write ("<li><a href='" + PageName + "?" + GetPageContext(null) + "doctype=wsdl&docind=" + n + "'>WSDL document " + descriptions[n].TargetNamespace + "</a></li>");
for (int n=0; n<schemas.Count; n++)
Response.Write ("<li><a href='" + PageName + "?" + GetPageContext(null) + "doctype=schema&docind=" + n + "'>Xml Schema " + schemas[n].TargetNamespace + "</a></li>");
%>
</ul>
<%} else {%>
<%}%>
<br>
<span class="label"><%=CurrentDocumentName%></span>&nbsp;&nbsp;&nbsp;
<a href="<%=PageName + "?" + CurrentDocType + "=" + CurrentDocInd %>">Download</a>
<br><br>
<div class="codePanel">
<div class="code-xml"><%=GenerateDocument ()%></div>
</div>
<%}%>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
<td width="20px"></td>
</tr>
</table>
</body>
</html>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="configProtectedData" type="System.Configuration.ProtectedConfigurationSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="connectionStrings" type="System.Configuration.ConnectionStringsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="mscorlib" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
<section name="runtime" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
<section name="assemblyBinding" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false" />
<section name="satelliteassemblies" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false" />
<section name="startup" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
<section name="system.codedom" type="System.CodeDom.Compiler.CodeDomConfigurationHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="system.data" type="System.Data.Common.DbProviderFactoriesConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="system.diagnostics" type="System.Diagnostics.DiagnosticsConfigurationHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="system.runtime.remoting" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowLocation="false"/>
<section name="system.windows.forms" type="System.Windows.Forms.WindowsFormsSection, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="windows" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false" />
<section name="strongNames" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowLocation="false"/>
<sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="anonymousIdentification" type="System.Web.Configuration.AnonymousIdentificationSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="authentication" type="System.Web.Configuration.AuthenticationSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="authorization" type="System.Web.Configuration.AuthorizationSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="browserCaps" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="clientTarget" type="System.Web.Configuration.ClientTargetSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="compilation" type="System.Web.Configuration.CompilationSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="customErrors" type="System.Web.Configuration.CustomErrorsSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="deployment" type="System.Web.Configuration.DeploymentSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineOnly" />
<section name="globalization" type="System.Web.Configuration.GlobalizationSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="healthMonitoring" type="System.Web.Configuration.HealthMonitoringSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="hostingEnvironment" type="System.Web.Configuration.HostingEnvironmentSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" />
<section name="httpCookies" type="System.Web.Configuration.HttpCookiesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="httpHandlers" type="System.Web.Configuration.HttpHandlersSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="httpModules" type="System.Web.Configuration.HttpModulesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="httpRuntime" type="System.Web.Configuration.HttpRuntimeSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="identity" type="System.Web.Configuration.IdentitySection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="machineKey" type="System.Web.Configuration.MachineKeySection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="membership" type="System.Web.Configuration.MembershipSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="mobileControls" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="deviceFilters" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="pages" type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="processModel" type="System.Web.Configuration.ProcessModelSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineOnly" allowLocation="false" />
<section name="profile" type="System.Web.Configuration.ProfileSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="roleManager" type="System.Web.Configuration.RoleManagerSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="securityPolicy" type="System.Web.Configuration.SecurityPolicySection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" />
<section name="sessionPageState" type="System.Web.Configuration.SessionPageStateSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="sessionState" type="System.Web.Configuration.SessionStateSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="siteMap" type="System.Web.Configuration.SiteMapSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="trace" type="System.Web.Configuration.TraceSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="trust" type="System.Web.Configuration.TrustSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" />
<section name="urlMappings" type="System.Web.Configuration.UrlMappingsSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="webControls" type="System.Web.Configuration.WebControlsSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="webParts" type="System.Web.Configuration.WebPartsSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="webServices" type="System.Web.Services.Configuration.WebServicesSection, System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="xhtmlConformance" type="System.Web.Configuration.XhtmlConformanceSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<sectionGroup name="caching" type="System.Web.Configuration.SystemWebCachingSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="cache" type="System.Web.Configuration.CacheSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="outputCache" type="System.Web.Configuration.OutputCacheSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="outputCacheSettings" type="System.Web.Configuration.OutputCacheSettingsSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="sqlCacheDependency" type="System.Web.Configuration.OutputCacheSettingsSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
</sectionGroup>
<section name="monoSettings" type="System.Web.Configuration.MonoSettingsSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</sectionGroup>
<sectionGroup name="system.net" type="System.Net.Configuration.NetSectionGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="authenticationModules" type="System.Net.Configuration.AuthenticationModulesSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="connectionManagement" type="System.Net.Configuration.ConnectionManagementSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="defaultProxy" type="System.Net.Configuration.DefaultProxySection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<sectionGroup name="mailSettings" type="System.Net.Configuration.MailSettingsSectionGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="smtp" type="System.Net.Configuration.SmtpSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
<section name="requestCaching" type="System.Net.Configuration.RequestCachingSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="settings" type="System.Net.Configuration.SettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="webRequestModules" type="System.Net.Configuration.WebRequestModulesSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
<section name="system.drawing" type="System.Configuration.NameValueSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<sectionGroup name="system.serviceModel" type="System.ServiceModel.Configuration.ServiceModelSectionGroup, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="behaviors" type="System.ServiceModel.Configuration.BehaviorsSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="bindings" type="System.ServiceModel.Configuration.BindingsSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="client" type="System.ServiceModel.Configuration.ClientSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="commonBehaviors" type="System.ServiceModel.Configuration.CommonBehaviorsSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="diagnostics" type="System.ServiceModel.Configuration.DiagnosticSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="extensions" type="System.ServiceModel.Configuration.ExtensionsSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="serviceHostingEnvironment" type="System.ServiceModel.Configuration.ServiceHostingEnvironmentSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="services" type="System.ServiceModel.Configuration.ServicesSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
<sectionGroup name="system.transactions" type="System.Transactions.Configuration.TransactionsSectionGroup, System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null">
<section name="defaultSettings" type="System.Transactions.Configuration.DefaultSettingsSection, System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"/>
<section name="machineSettings" type="System.Transactions.Configuration.MachineSettingsSection, System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" allowDefinition="MachineOnly" allowExeDefinition="MachineOnly"/>
</sectionGroup>
<section name="system.webServer" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
<add name="LocalSqliteServer" connectionString="Data Source=|DataDirectory|/aspnetdb.sqlite;version=3" providerName="Mono.Data.Sqlite"/>
</connectionStrings>
<configProtectedData defaultProvider="RsaProtectedConfigurationProvider">
<providers>
<add name="RsaProtectedConfigurationProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
description="" keyContainerName="MonoFrameworkConfigurationKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
<add name="DataProtectionConfigurationProvider" type="System.Configuration.DpapiProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
description="" useMachineProtection="true" keyEntropy="" />
</providers>
</configProtectedData>
<system.net>
<authenticationModules>
<add type="System.Net.BasicClient, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.Net.DigestClient, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.Net.NtlmClient, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</authenticationModules>
<webRequestModules>
<add prefix="http" type="System.Net.HttpRequestCreator, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add prefix="https" type="System.Net.HttpRequestCreator, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add prefix="file" type="System.Net.FileWebRequestCreator, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add prefix="ftp" type="System.Net.FtpRequestCreator, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</webRequestModules>
<settings>
<ipv6 enabled="true"/>
</settings>
</system.net>
<system.runtime.remoting>
<application>
<channels>
<channel ref="http client" displayName="http client (delay loaded)" delayLoadAsClientChannel="true" />
<channel ref="tcp client" displayName="tcp client (delay loaded)" delayLoadAsClientChannel="true" />
<channel ref="ipc client" displayName="ipc client (delay loaded)" delayLoadAsClientChannel="true" />
</channels>
</application>
<channels>
<channel id="http" type="System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="http client" type="System.Runtime.Remoting.Channels.Http.HttpClientChannel, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="http server" type="System.Runtime.Remoting.Channels.Http.HttpServerChannel, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="tcp" type="System.Runtime.Remoting.Channels.Tcp.TcpChannel, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="tcp client" type="System.Runtime.Remoting.Channels.Tcp.TcpClientChannel, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="tcp server" type="System.Runtime.Remoting.Channels.Tcp.TcpServerChannel, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="ipc" type="System.Runtime.Remoting.Channels.Ipc.IpcChannel, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="ipc client" type="System.Runtime.Remoting.Channels.Ipc.IpcClientChannel, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="ipc server" type="System.Runtime.Remoting.Channels.Ipc.IpcServerChannel, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</channels>
<channelSinkProviders>
<clientProviders>
<formatter id="soap" type="System.Runtime.Remoting.Channels.SoapClientFormatterSinkProvider, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<formatter id="binary" type="System.Runtime.Remoting.Channels.BinaryClientFormatterSinkProvider, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</clientProviders>
<serverProviders>
<formatter id="soap" type="System.Runtime.Remoting.Channels.SoapServerFormatterSinkProvider, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<formatter id="binary" type="System.Runtime.Remoting.Channels.BinaryServerFormatterSinkProvider, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<provider id="wsdl" type="System.Runtime.Remoting.MetadataServices.SdlChannelSinkProvider, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</serverProviders>
</channelSinkProviders>
</system.runtime.remoting>
<appSettings>
<!--<add key="yourkey" value="your value" /> -->
<!--<remove key="a key defined higher in the hierarchy" /> -->
<!--<clear/> Removes all defined settings -->
</appSettings>
<system.diagnostics>
<trace autoflush="false" indentsize="4" />
</system.diagnostics>
<system.drawing>
</system.drawing>
<system.data>
<DbProviderFactories>
<add name="Mono Sqlite Data Provider" invariant="Mono.Data.SqliteClient"
description="Mono Framework Data Provider for SQLite (old version)"
type="Mono.Data.SqliteClient.SqliteFactory, Mono.Data.SqliteClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"/>
<add name="Mono Sqlite Provider" invariant="Mono.Data.Sqlite"
description="Mono Framework Data Provider for SQLite (new version)"
type="Mono.Data.Sqlite.SqliteFactory, Mono.Data.Sqlite, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"/>
<add name="Odbc Data Provider" invariant="System.Data.Odbc"
description=".Net Framework Data Provider for Odbc"
type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OleDb Data Provider" invariant="System.Data.OleDb"
description=".Net Framework Data Provider for OleDb"
type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OracleClient Data Provider" invariant="System.Data.OracleClient"
description=".Net Framework Data Provider for Oracle"
type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient"
description=".Net Framework Data Provider for SqlServer"
type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="Sybase Data Provider" invariant="Mono.Data.SybaseClient"
description=".Net Framework Data Provider for Sybase"
type="Mono.Data.SybaseClient.SybaseClientFactory, Mono.Data.SybaseClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"/>
</DbProviderFactories>
</system.data>
<mscorlib>
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass monoMD2="Mono.Security.Cryptography.MD2Managed, Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
<cryptoClass monoMD4="Mono.Security.Cryptography.MD4Managed, Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
</cryptoClasses>
<nameEntry name="MD2" class="monoMD2" />
<nameEntry name="MD4" class="monoMD4" />
</cryptoNameMapping>
<oidMap>
<oidEntry OID="1.2.840.113549.2.2" name="MD2" />
<oidEntry OID="1.2.840.113549.2.2" name="Mono.Security.Cryptography.MD2Managed" />
<oidEntry OID="1.2.840.113549.2.4" name="MD4" />
<oidEntry OID="1.2.840.113549.2.4" name="Mono.Security.Cryptography.MD4Managed" />
</oidMap>
</cryptographySettings>
</mscorlib>
<strongNames>
<pubTokenMapping>
<!-- ECMA key -->
<map Token="b77a5c561934e089" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- Microsoft (final) key -->
<map Token="b03f5f7f11d50a3a" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- Microsoft (Web Service Enhancement) key -->
<map Token="31bf3856ad364e35" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- IBM (DB2 Data Provider) key -->
<map Token="7c307b91aa13d208" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- Silverlight 2.0 key -->
<map Token="7cec85d7bea7798e" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- XNA Framework key -->
<map Token="6d5c3888ef60e27d" PublicKey="0024000004800000940000000602000000240000525341310004000001000100f9a2641bac9847900d92a33d652ccc4e8b529360f908e7af53e57008b2a9a1938c32a160d47f795a23590557608d2c8d0c0e8846a052d070f9298281b8185343dbe5b479bd52de256f73c2a943e1a8a42065b5c918622dc14b1c0151dbd94d9a4543e7cd03e536b1b1d2d6d99af535d227ab9bdac76af9312a21d457bdf817e6" />
</pubTokenMapping>
</strongNames>
<system.web>
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpSoap12"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
<conformanceWarnings>
<add name="BasicProfile1_1"/>
</conformanceWarnings>
<wsdlHelpGenerator href="DefaultWsdlHelpGenerator.aspx" />
</webServices>
<membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
<!-- <add name="AspNetSqlMembershipProvider" type="Mainsoft.Web.Security.GenericMembershipProvider, Mainsoft.Web.Security" applicationName="/" connectionStringName="LocalSqlServer" /> -->
</providers>
</membership>
<roleManager>
<providers>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="LocalSqlServer" />
<!-- <add name="AspNetSqlRoleProvider" type="Mainsoft.Web.Security.GenericRoleProvider, Mainsoft.Web.Security" applicationName="/" connectionStringName="LocalSqlServer" /> -->
</providers>
</roleManager>
<profile>
<providers>
<add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</profile>
</system.web>
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="enableWebScript" type="System.ServiceModel.Configuration.WebScriptEnablingElement, System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="webHttp" type="System.ServiceModel.Configuration.WebHttpElement, System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</behaviorExtensions>
<bindingElementExtensions>
<add name="webMessageEncoding" type="System.ServiceModel.Configuration.WebMessageEncodingElement, System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingElementExtensions>
<bindingExtensions>
<add name="webHttpBinding" type="System.ServiceModel.Configuration.WebHttpBindingCollectionElement, System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingExtensions>
</extensions>
</system.serviceModel>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<settingsMap>
<map sectionType="System.Web.Configuration.MembershipSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mapperType="Mono.Web.Util.MembershipSectionMapper, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
platform="Unix">
<!-- The 'what' tag specifies which region of the section to modify. The 'value' attribute value is mapper-specific and is not defined here. It can be
any expression understood by the mapper to designate the section region to modify.
-->
<what value="providers">
<!-- 'what' can contain any number of occurrences of any three elements:
replace - replace the designated region
add - add a new entry to the region
clear - clear the region
remove - remove the designatedregion
The attributes to any of the above are freeform and are not processed by the mapper manager. They are stored verbatim for the
mapper to peruse.
-->
<replace name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqliteMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqliteServer" />
</what>
</map>
<map sectionType="System.Web.Configuration.RoleManagerSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mapperType="Mono.Web.Util.RoleManagerSectionMapper, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
platform="Unix">
<!-- The 'what' tag specifies which region of the section to modify. The 'value' attribute value is mapper-specific and is not defined here. It can be
any expression understood by the mapper to designate the section region to modify.
-->
<what value="providers">
<!-- 'what' can contain any number of occurrences of any three elements:
replace - replace the designated region
add - add a new entry to the region
clear - clear the region
remove - remove the designatedregion
The attributes to any of the above are freeform and are not processed by the mapper manager. They are stored verbatim for the
mapper to peruse.
-->
<replace name="AspNetSqlRoleProvider"
type="System.Web.Security.SqliteRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqliteServer" />
</what>
</map>
</settingsMap>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<monoSettings>
<compilersCompatibility>
<compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/nowarn:0169"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</compilersCompatibility>
</monoSettings>
<authorization>
<allow users="*" />
</authorization>
<httpHandlers>
<add verb="*" path="Trace.axd" type="System.Web.Handlers.TraceHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.asmx" validate="false" type="System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="GET" path="WebResource.axd" type="System.Web.Handlers.AssemblyResourceLoader, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.master" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.resources" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.skin" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.browser" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.sitemap" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.webinfo" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.resx" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.asax" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.ascx" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.config" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.Config" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.cs" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.vb" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.csproj" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.vbproj" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.licx" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.dll" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*.rem" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false" />
<add verb="*" path="*.soap" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false" />
<add verb="*" path="*.svc" type="System.ServiceModel.Channels.SvcHttpHandlerFactory, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add verb="GET,HEAD" path="*" type="System.Web.StaticFileHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add verb="*" path="*" type="System.Web.HttpMethodNotAllowedHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</httpHandlers>
<httpModules>
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="OutputCache" type="System.Web.Caching.OutputCacheModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="RoleManager" type="System.Web.Security.RoleManagerModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="Session" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</httpModules>
<authentication mode="Forms">
<forms name=".MONOAUTH" loginUrl="login.aspx" protection="All" timeout="30" path="/">
<credentials passwordFormat="Clear">
<!--<user name="gonzalo" password="gonz"/>-->
</credentials>
</forms>
</authentication>
<machineKey validationKey="AutoGenerate" decryptionKey="AutoGenerate" validation="SHA1" />
<globalization requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding="utf-8"/>
<!--
culture="en-US"
uiculture="en-US" />
-->
<sessionState mode="InProc" />
<pages>
<namespaces>
<add namespace="System" />
<add namespace="System.Collections" />
<add namespace="System.Collections.Specialized" />
<add namespace="System.Configuration" />
<add namespace="System.Text" />
<add namespace="System.Text.RegularExpressions" />
<add namespace="System.Web" />
<add namespace="System.Web.Caching" />
<add namespace="System.Web.SessionState" />
<add namespace="System.Web.Security" />
<add namespace="System.Web.Profile" />
<add namespace="System.Web.UI" />
<add namespace="System.Web.UI.WebControls" />
<!-- <add namespace="System.Web.UI.WebControls.WebParts" /> -->
<add namespace="System.Web.UI.HtmlControls" />
</namespaces>
</pages>
<webControls clientScriptsLocation="/web_scripts" />
<compilation debug="false" defaultLanguage="c#" explicit="true" strict="false" >
<assemblies>
<!--<add assembly="mscorlib" /> -->
<add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"/>
<add assembly="System.IdentityModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"/>
<add assembly="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add assembly="System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="*" /> <!-- Add assemblies in bin directory -->
</assemblies>
<expressionBuilders>
<add expressionPrefix="Resources"
type="System.Web.Compilation.ResourceExpressionBuilder, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add expressionPrefix="ConnectionStrings"
type="System.Web.Compilation.ConnectionStringsExpressionBuilder, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add expressionPrefix="AppSettings"
type="System.Web.Compilation.AppSettingsExpressionBuilder, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</expressionBuilders>
<buildProviders>
<add extension=".aspx" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".ascx" type="System.Web.Compilation.UserControlBuildProvider" />
<add extension=".master" type="System.Web.Compilation.MasterPageBuildProvider" />
<add extension=".asmx" type="System.Web.Compilation.WebServiceBuildProvider" />
<add extension=".ashx" type="System.Web.Compilation.WebHandlerBuildProvider" />
<add extension=".soap" type="System.Web.Compilation.WebServiceBuildProvider" />
<add extension=".resx" type="System.Web.Compilation.ResXBuildProvider" />
<add extension=".resources" type="System.Web.Compilation.ResourcesBuildProvider" />
<add extension=".wsdl" type="System.Web.Compilation.WsdlBuildProvider" />
<add extension=".xsd" type="System.Web.Compilation.XsdBuildProvider" />
<add extension=".js" type="System.Web.Compilation.ForceCopyBuildProvider" />
<add extension=".lic" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<add extension=".licx" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<add extension=".exclude" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<add extension=".refresh" type="System.Web.Compilation.IgnoreFileBuildProvider" />
</buildProviders>
</compilation>
<httpRuntime executionTimeout="110"
maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="5000" />
<clientTarget>
<add alias="ie5" userAgent="Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)" />
<add alias="ie4" userAgent="Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 4.0)" />
<add alias="uplevel" userAgent="Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 4.0)" />
<add alias="downlevel" userAgent="Unknown" />
</clientTarget>
<siteMap>
<providers>
<add name="AspNetXmlSiteMapProvider"
description="Default site map provider that reads in .sitemap xml files."
type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
siteMapFile="Web.sitemap" />
</providers>
</siteMap>
</system.web>
</configuration>
<!--
This file defines some of the browsers that Microsoft's implementation provides in
<windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers\*.browser
It is not derived from any file distributed with Microsoft's implementation. Since
we can't distribute MS's browser files, we use browscap.ini to determine
browser capabilities. Then, if and only if the application contains App_Browser/*.browser
files and we are using .NET 2.0 or higher, we supplement the capabilities with the
information in those files and the files in this directory. The primary goal of this file
is provide browser definitions that might be referenced in App_Browser/*.browser files.
-->
<browsers>
<defaultBrowser id="Default">
</defaultBrowser>
<browser id="Default">
<identification>
<userAgent match="." />
</identification>
</browser>
<browser id="IE6to9" parentID="Default">
<identification>
<capability name="majorver" match="^[6-9]" />
<capability name="browser" match="^(IE|AOL)$" />
</identification>
</browser>
<browser id="Opera8to9" parentID="Default">
<identification>
<capability name="majorver" match="^[8-9]" />
<capability name="browser" match="^Opera$" />
</identification>
</browser>
<browser id="Safari" parentID="Default">
<identification>
<capability name="browser" match="^Safari$" />
</identification>
</browser>
<browser id="Mozilla" parentID="Default">
<identification>
<capability name="browser" match="^Mozilla" />
</identification>
</browser>
</browsers>
\ No newline at end of file
<%--
//
// DefaultWsdlHelpGenerator.aspx:
//
// Author:
// Lluis Sanchez Gual (lluis@ximian.com)
//
// (C) 2003 Ximian, Inc. http://www.ximian.com
//
--%>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Xml.Serialization" %>
<%@ Import Namespace="System.Xml" %>
<%@ 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.Resources" %>
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.CodeDom" %>
<%@ Import Namespace="System.CodeDom.Compiler" %>
<%@ Import Namespace="Microsoft.CSharp" %>
<%@ Import Namespace="Microsoft.VisualBasic" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Text.RegularExpressions" %>
<%@ Import Namespace="System.Security.Cryptography.X509Certificates" %>
<%@ Assembly name="System.Web.Services" %>
<%@ Page debug="true" %>
<html>
<script language="C#" runat="server">
ServiceDescriptionCollection descriptions;
XmlSchemas schemas;
string WebServiceName;
string WebServiceDescription;
string PageName;
string DefaultBinding;
ArrayList ServiceProtocols;
string CurrentOperationName;
string CurrentOperationBinding;
string OperationDocumentation;
string CurrentOperationFormat;
bool CurrentOperationSupportsTest;
ArrayList InParams;
ArrayList OutParams;
string CurrentOperationProtocols;
int CodeTextColumns = 95;
BasicProfileViolationCollection ProfileViolations;
void Page_Load(object sender, EventArgs e)
{
descriptions = (ServiceDescriptionCollection) Context.Items["wsdls"];
schemas = (XmlSchemas) Context.Items["schemas"];
ServiceDescription desc = descriptions [0];
if (schemas.Count == 0) schemas = desc.Types.Schemas;
Service service = desc.Services[0];
WebServiceName = service.Name;
if (desc.Bindings.Count == 0)
return;
DefaultBinding = desc.Bindings[0].Name;
WebServiceDescription = service.Documentation;
if (WebServiceDescription == "" || WebServiceDescription == null)
WebServiceDescription = "Description has not been provided";
ServiceProtocols = FindServiceProtocols (null);
CurrentOperationName = Request.QueryString["op"];
CurrentOperationBinding = Request.QueryString["bnd"];
if (CurrentOperationName != null) BuildOperationInfo ();
PageName = HttpUtility.UrlEncode (Path.GetFileName(Request.Path), Encoding.UTF8);
ArrayList list = new ArrayList ();
foreach (ServiceDescription sd in descriptions) {
foreach (Binding bin in sd.Bindings)
if (bin.Extensions.Find (typeof(SoapBinding)) != null) list.Add (bin);
}
BindingsRepeater.DataSource = list;
Page.DataBind();
ProfileViolations = new BasicProfileViolationCollection ();
foreach (WsiProfilesElement claims in ((WebServicesSection) WebConfigurationManager.GetSection("system.web/webServices")).ConformanceWarnings)
if (claims.Name != WsiProfiles.None)
WebServicesInteroperability.CheckConformance (claims.Name, descriptions, ProfileViolations);
}
void BuildOperationInfo ()
{
InParams = new ArrayList ();
OutParams = new ArrayList ();
Port port = FindPort (CurrentOperationBinding, null);
Binding binding = descriptions.GetBinding (port.Binding);
PortType portType = descriptions.GetPortType (binding.Type);
Operation oper = FindOperation (portType, CurrentOperationName);
OperationDocumentation = oper.Documentation;
if (OperationDocumentation == null || OperationDocumentation == "")
OperationDocumentation = "No additional remarks";
foreach (OperationMessage opm in oper.Messages)
{
if (opm is OperationInput)
BuildParameters (InParams, opm);
else if (opm is OperationOutput)
BuildParameters (OutParams, opm);
}
// Protocols supported by the operation
CurrentOperationProtocols = "";
WebServiceProtocols testProtocols = 0;
ArrayList prots = FindServiceProtocols (CurrentOperationName);
for (int n=0; n<prots.Count; n++) {
string prot = (string) prots [n];
if (n != 0) CurrentOperationProtocols += ", ";
CurrentOperationProtocols += prot;
if (prot == "HttpGet")
testProtocols |= WebServiceProtocols.HttpGet;
else if (prot == "HttpPost") {
testProtocols |= WebServiceProtocols.HttpPost;
if (Context.Request.IsLocal)
testProtocols |= WebServiceProtocols.HttpPostLocalhost;
}
}
CurrentOperationSupportsTest = (WebServicesSection.Current.EnabledProtocols & testProtocols) != 0;
// Operation format
OperationBinding obin = FindOperation (binding, CurrentOperationName);
if (obin != null)
CurrentOperationFormat = GetOperationFormat (obin);
InputParamsRepeater.DataSource = InParams;
InputFormParamsRepeater.DataSource = InParams;
OutputParamsRepeater.DataSource = OutParams;
}
void BuildParameters (ArrayList list, OperationMessage opm)
{
Message msg = descriptions.GetMessage (opm.Message);
if (msg.Parts.Count > 0 && msg.Parts[0].Name == "parameters")
{
MessagePart part = msg.Parts[0];
XmlSchemaComplexType ctype;
if (part.Element == XmlQualifiedName.Empty)
{
ctype = (XmlSchemaComplexType) schemas.Find (part.Type, typeof(XmlSchemaComplexType));
}
else
{
XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (part.Element, typeof(XmlSchemaElement));
ctype = (XmlSchemaComplexType) elem.SchemaType;
}
XmlSchemaSequence seq = ctype.Particle as XmlSchemaSequence;
if (seq == null) return;
foreach (XmlSchemaObject ob in seq.Items)
{
Parameter p = new Parameter();
p.Description = "No additional remarks";
if (ob is XmlSchemaElement)
{
XmlSchemaElement selem = GetRefElement ((XmlSchemaElement)ob);
p.Name = selem.Name;
p.Type = selem.SchemaTypeName.Name;
}
else
{
p.Name = "Unknown";
p.Type = "Unknown";
}
list.Add (p);
}
}
else
{
foreach (MessagePart part in msg.Parts)
{
Parameter p = new Parameter ();
p.Description = "No additional remarks";
p.Name = part.Name;
if (part.Element == XmlQualifiedName.Empty)
p.Type = part.Type.Name;
else
{
XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (part.Element, typeof(XmlSchemaElement));
p.Type = elem.SchemaTypeName.Name;
}
list.Add (p);
}
}
}
string GetOperationFormat (OperationBinding obin)
{
string format = "";
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
if (sob != null) {
format = sob.Style.ToString ();
SoapBodyBinding sbb = obin.Input.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
if (sbb != null)
format += " / " + sbb.Use;
}
return format;
}
XmlSchemaElement GetRefElement (XmlSchemaElement elem)
{
if (!elem.RefName.IsEmpty)
return (XmlSchemaElement) schemas.Find (elem.RefName, typeof(XmlSchemaElement));
else
return elem;
}
ArrayList FindServiceProtocols(string operName)
{
ArrayList table = new ArrayList ();
Service service = descriptions[0].Services[0];
foreach (Port port in service.Ports)
{
string prot = null;
Binding bin = descriptions.GetBinding (port.Binding);
if (bin.Extensions.Find (typeof(SoapBinding)) != null)
prot = "Soap";
else
{
HttpBinding hb = (HttpBinding) bin.Extensions.Find (typeof(HttpBinding));
if (hb != null && hb.Verb == "POST") prot = "HttpPost";
else if (hb != null && hb.Verb == "GET") prot = "HttpGet";
}
if (prot != null && operName != null)
{
if (FindOperation (bin, operName) == null)
prot = null;
}
if (prot != null && !table.Contains (prot))
table.Add (prot);
}
return table;
}
Port FindPort (string portName, string protocol)
{
Service service = descriptions[0].Services[0];
foreach (Port port in service.Ports)
{
if (portName == null)
{
Binding binding = descriptions.GetBinding (port.Binding);
if (GetProtocol (binding) == protocol) return port;
}
else if (port.Name == portName)
return port;
}
return null;
}
string GetProtocol (Binding binding)
{
if (binding.Extensions.Find (typeof(SoapBinding)) != null) return "Soap";
HttpBinding hb = (HttpBinding) binding.Extensions.Find (typeof(HttpBinding));
if (hb == null) return "";
if (hb.Verb == "POST") return "HttpPost";
if (hb.Verb == "GET") return "HttpGet";
return "";
}
Operation FindOperation (PortType portType, string name)
{
foreach (Operation oper in portType.Operations) {
if (oper.Messages.Input.Name != null) {
if (oper.Messages.Input.Name == name) return oper;
}
else
if (oper.Name == name) return oper;
}
return null;
}
OperationBinding FindOperation (Binding binding, string name)
{
foreach (OperationBinding oper in binding.Operations) {
if (oper.Input.Name != null) {
if (oper.Input.Name == name) return oper;
}
else
if (oper.Name == name) return oper;
}
return null;
}
string FormatBindingName (string name)
{
if (name == DefaultBinding) return "Methods";
else return "Methods for binding<br>" + name;
}
string GetOpName (object op)
{
OperationBinding ob = op as OperationBinding;
if (ob == null) return "";
if (ob.Input.Name != null) return ob.Input.Name;
else return ob.Name;
}
bool HasFormResult
{
get { return Request.QueryString ["ext"] == "testform"; }
}
class NoCheckCertificatePolicy : ICertificatePolicy {
public bool CheckValidationResult (ServicePoint a, X509Certificate b, WebRequest c, int d)
{
return true;
}
}
string GetOrPost ()
{
return (CurrentOperationProtocols.IndexOf ("HttpGet") >= 0) ? "GET" : "POST";
}
string GetQS ()
{
bool fill = false;
string qs = "";
NameValueCollection query_string = Request.QueryString;
for (int n = 0; n < query_string.Count; n++) {
if (fill) {
if (qs != "") qs += "&";
qs += query_string.GetKey(n) + "=" + Server.UrlEncode (query_string [n]);
}
if (query_string.GetKey(n) == "ext") fill = true;
}
return qs;
}
string GetTestResultUrl ()
{
if (!HasFormResult) return "";
string location = null;
ServiceDescription desc = descriptions [0];
Service service = desc.Services[0];
foreach (Port port in service.Ports)
if (port.Name == CurrentOperationBinding)
{
SoapAddressBinding sbi = (SoapAddressBinding) port.Extensions.Find (typeof(SoapAddressBinding));
if (sbi != null)
location = sbi.Location;
}
if (location == null)
return "Could not locate web service";
return location + "/" + CurrentOperationName;
}
string GenerateOperationMessages (string protocol, bool generateInput)
{
if (!IsOperationSupported (protocol)) return "";
Port port;
if (protocol != "Soap") port = FindPort (null, protocol);
else port = FindPort (CurrentOperationBinding, null);
Binding binding = descriptions.GetBinding (port.Binding);
OperationBinding obin = FindOperation (binding, CurrentOperationName);
PortType portType = descriptions.GetPortType (binding.Type);
Operation oper = FindOperation (portType, CurrentOperationName);
HtmlSampleGenerator sg = new HtmlSampleGenerator (descriptions, schemas);
string txt = sg.GenerateMessage (port, obin, oper, protocol, generateInput);
if (protocol == "Soap") txt = WrapText (txt,CodeTextColumns);
txt = ColorizeXml (txt);
txt = txt.Replace ("@placeholder!","<span class='literal-placeholder'>");
txt = txt.Replace ("!placeholder@","</span>");
return txt;
}
bool IsOperationSupported (string protocol)
{
if (CurrentPage != "op" || CurrentTab != "msg") return false;
if (protocol == "Soap") return true;
Port port = FindPort (null, protocol);
if (port == null) return false;
Binding binding = descriptions.GetBinding (port.Binding);
if (binding == null) return false;
return FindOperation (binding, CurrentOperationName) != null;
}
//
// Proxy code generation
//
string GetProxyCode ()
{
CodeNamespace codeNamespace = new CodeNamespace();
CodeCompileUnit codeUnit = new CodeCompileUnit();
codeUnit.Namespaces.Add (codeNamespace);
ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
foreach (ServiceDescription sd in descriptions)
importer.AddServiceDescription(sd, null, null);
foreach (XmlSchema sc in schemas)
importer.Schemas.Add (sc);
importer.Import(codeNamespace, codeUnit);
string langId = Request.QueryString ["lang"];
if (langId == null || langId == "") langId = "cs";
CodeDomProvider provider = GetProvider (langId);
ICodeGenerator generator = provider.CreateGenerator();
CodeGeneratorOptions options = new CodeGeneratorOptions();
StringWriter sw = new StringWriter ();
generator.GenerateCodeFromCompileUnit(codeUnit, sw, options);
return Colorize (WrapText (sw.ToString (), CodeTextColumns), langId);
}
public string CurrentLanguage
{
get {
string langId = Request.QueryString ["lang"];
if (langId == null || langId == "") langId = "cs";
return langId;
}
}
public string CurrentProxytName
{
get {
string lan = CurrentLanguage == "cs" ? "C#" : "Visual Basic";
return lan + " Client Proxy";
}
}
private CodeDomProvider GetProvider(string langId)
{
switch (langId.ToUpper())
{
case "CS": return new CSharpCodeProvider();
case "VB": return new VBCodeProvider();
default: return null;
}
}
//
// Document generation
//
class UTF8StringWriter : StringWriter {
public override Encoding Encoding {
get { return Encoding.UTF8; }
}
}
string GenerateDocument ()
{
UTF8StringWriter sw = new UTF8StringWriter ();
if (CurrentDocType == "wsdl")
descriptions [CurrentDocInd].Write (sw);
else if (CurrentDocType == "schema")
schemas [CurrentDocInd].Write (sw);
return Colorize (WrapText (sw.ToString (), CodeTextColumns), "xml");
}
public string CurrentDocType
{
get { return Request.QueryString ["doctype"] != null ? Request.QueryString ["doctype"] : "wsdl"; }
}
public int CurrentDocInd
{
get { return Request.QueryString ["docind"] != null ? int.Parse (Request.QueryString ["docind"]) : 0; }
}
public string CurrentDocumentName
{
get {
if (CurrentDocType == "wsdl")
return "WSDL document for namespace \"" + descriptions [CurrentDocInd].TargetNamespace + "\"";
else
return "Xml Schema for namespace \"" + schemas [CurrentDocInd].TargetNamespace + "\"";
}
}
//
// Pages and tabs
//
bool firstTab = true;
ArrayList disabledTabs = new ArrayList ();
string CurrentTab
{
get { return Request.QueryString["tab"] != null ? Request.QueryString["tab"] : "main" ; }
}
string CurrentPage
{
get { return Request.QueryString["page"] != null ? Request.QueryString["page"] : "main" ; }
}
void WriteTabs ()
{
if (CurrentOperationName != null)
{
WriteTab ("main","Overview");
WriteTab ("test","Test Form");
WriteTab ("msg","Message Layout");
}
}
void WriteTab (string id, string label)
{
if (!firstTab) Response.Write("&nbsp;|&nbsp;");
firstTab = false;
string cname = CurrentTab == id ? "tabLabelOn" : "tabLabelOff";
Response.Write ("<a href='" + PageName + "?" + GetPageContext(null) + GetDataContext() + "tab=" + id + "' style='text-decoration:none'>");
Response.Write ("<span class='" + cname + "'>" + label + "</span>");
Response.Write ("</a>");
}
string GetTabContext (string pag, string tab)
{
if (tab == null) tab = CurrentTab;
if (pag == null) pag = CurrentPage;
if (pag != CurrentPage) tab = "main";
return "page=" + pag + "&tab=" + tab + "&";
}
string GetPageContext (string pag)
{
if (pag == null) pag = CurrentPage;
return "page=" + pag + "&";
}
class Tab
{
public string Id;
public string Label;
}
//
// Syntax coloring
//
static string keywords_cs =
"(\\babstract\\b|\\bevent\\b|\\bnew\\b|\\bstruct\\b|\\bas\\b|\\bexplicit\\b|\\bnull\\b|\\bswitch\\b|\\bbase\\b|\\bextern\\b|" +
"\\bobject\\b|\\bthis\\b|\\bbool\\b|\\bfalse\\b|\\boperator\\b|\\bthrow\\b|\\bbreak\\b|\\bfinally\\b|\\bout\\b|\\btrue\\b|" +
"\\bbyte\\b|\\bfixed\\b|\\boverride\\b|\\btry\\b|\\bcase\\b|\\bfloat\\b|\\bparams\\b|\\btypeof\\b|\\bcatch\\b|\\bfor\\b|" +
"\\bprivate\\b|\\buint\\b|\\bchar\\b|\\bforeach\\b|\\bprotected\\b|\\bulong\\b|\\bchecked\\b|\\bgoto\\b|\\bpublic\\b|" +
"\\bunchecked\\b|\\bclass\\b|\\bif\\b|\\breadonly\\b|\\bunsafe\\b|\\bconst\\b|\\bimplicit\\b|\\bref\\b|\\bushort\\b|" +
"\\bcontinue\\b|\\bin\\b|\\breturn\\b|\\busing\\b|\\bdecimal\\b|\\bint\\b|\\bsbyte\\b|\\bvirtual\\b|\\bdefault\\b|" +
"\\binterface\\b|\\bsealed\\b|\\bvolatile\\b|\\bdelegate\\b|\\binternal\\b|\\bshort\\b|\\bvoid\\b|\\bdo\\b|\\bis\\b|" +
"\\bsizeof\\b|\\bwhile\\b|\\bdouble\\b|\\block\\b|\\bstackalloc\\b|\\belse\\b|\\blong\\b|\\bstatic\\b|\\benum\\b|" +
"\\bnamespace\\b|\\bstring\\b)";
static string keywords_vb =
"(\\bAddHandler\\b|\\bAddressOf\\b|\\bAlias\\b|\\bAnd\\b|\\bAndAlso\\b|\\bAnsi\\b|\\bAs\\b|\\bAssembly\\b|" +
"\\bAuto\\b|\\bBoolean\\b|\\bByRef\\b|\\bByte\\b|\\bByVal\\b|\\bCall\\b|\\bCase\\b|\\bCatch\\b|" +
"\\bCBool\\b|\\bCByte\\b|\\bCChar\\b|\\bCDate\\b|\\bCDec\\b|\\bCDbl\\b|\\bChar\\b|\\bCInt\\b|" +
"\\bClass\\b|\\bCLng\\b|\\bCObj\\b|\\bConst\\b|\\bCShort\\b|\\bCSng\\b|\\bCStr\\b|\\bCType\\b|" +
"\\bDate\\b|\\bDecimal\\b|\\bDeclare\\b|\\bDefault\\b|\\bDelegate\\b|\\bDim\\b|\\bDirectCast\\b|\\bDo\\b|" +
"\\bDouble\\b|\\bEach\\b|\\bElse\\b|\\bElseIf\\b|\\bEnd\\b|\\bEnum\\b|\\bErase\\b|\\bError\\b|" +
"\\bEvent\\b|\\bExit\\b|\\bFalse\\b|\\bFinally\\b|\\bFor\\b|\\bFriend\\b|\\bFunction\\b|\\bGet\\b|" +
"\\bGetType\\b|\\bGoSub\\b|\\bGoTo\\b|\\bHandles\\b|\\bIf\\b|\\bImplements\\b|\\bImports\\b|\\bIn\\b|" +
"\\bInherits\\b|\\bInteger\\b|\\bInterface\\b|\\bIs\\b|\\bLet\\b|\\bLib\\b|\\bLike\\b|\\bLong\\b|" +
"\\bLoop\\b|\\bMe\\b|\\bMod\\b|\\bModule\\b|\\bMustInherit\\b|\\bMustOverride\\b|\\bMyBase\\b|\\bMyClass\\b|" +
"\\bNamespace\\b|\\bNew\\b|\\bNext\\b|\\bNot\\b|\\bNothing\\b|\\bNotInheritable\\b|\\bNotOverridable\\b|\\bObject\\b|" +
"\\bOn\\b|\\bOption\\b|\\bOptional\\b|\\bOr\\b|\\bOrElse\\b|\\bOverloads\\b|\\bOverridable\\b|\\bOverrides\\b|" +
"\\bParamArray\\b|\\bPreserve\\b|\\bPrivate\\b|\\bProperty\\b|\\bProtected\\b|\\bPublic\\b|\\bRaiseEvent\\b|\\bReadOnly\\b|" +
"\\bReDim\\b|\\bREM\\b|\\bRemoveHandler\\b|\\bResume\\b|\\bReturn\\b|\\bSelect\\b|\\bSet\\b|\\bShadows\\b|" +
"\\bShared\\b|\\bShort\\b|\\bSingle\\b|\\bStatic\\b|\\bStep\\b|\\bStop\\b|\\bString\\b|\\bStructure\\b|" +
"\\bSub\\b|\\bSyncLock\\b|\\bThen\\b|\\bThrow\\b|\\bTo\\b|\\bTrue\\b|\\bTry\\b|\\bTypeOf\\b|" +
"\\bUnicode\\b|\\bUntil\\b|\\bVariant\\b|\\bWhen\\b|\\bWhile\\b|\\bWith\\b|\\bWithEvents\\b|\\bWriteOnly\\b|\\bXor\\b)";
string Colorize (string text, string lang)
{
if (lang == "xml") return ColorizeXml (text);
else if (lang == "cs") return ColorizeCs (text);
else if (lang == "vb") return ColorizeVb (text);
else return text;
}
string ColorizeXml (string text)
{
text = text.Replace (" ", "&nbsp;");
Regex re = new Regex ("\r\n|\r|\n");
text = re.Replace (text, "_br_");
re = new Regex ("<\\s*(\\/?)\\s*([\\s\\S]*?)\\s*(\\/?)\\s*>");
text = re.Replace (text,"{blue:&lt;$1}{maroon:$2}{blue:$3&gt;}");
re = new Regex ("\\{(\\w*):([\\s\\S]*?)\\}");
text = re.Replace (text,"<span style='color:$1'>$2</span>");
re = new Regex ("\"(.*?)\"");
text = re.Replace (text,"\"<span style='color:purple'>$1</span>\"");
text = text.Replace ("\t", "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
text = text.Replace ("_br_", "<br>");
return text;
}
string ColorizeCs (string text)
{
text = text.Replace (" ", "&nbsp;");
text = text.Replace ("<", "&lt;");
text = text.Replace (">", "&gt;");
Regex re = new Regex ("\"((((?!\").)|\\\")*?)\"");
text = re.Replace (text,"<span style='color:purple'>\"$1\"</span>");
re = new Regex ("//(((.(?!\"</span>))|\"(((?!\").)*)\"</span>)*)(\r|\n|\r\n)");
text = re.Replace (text,"<span style='color:green'>//$1</span><br/>");
re = new Regex (keywords_cs);
text = re.Replace (text,"<span style='color:blue'>$1</span>");
text = text.Replace ("\t","&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
text = text.Replace ("\n","<br/>");
return text;
}
string ColorizeVb (string text)
{
text = text.Replace (" ", "&nbsp;");
/* Regex re = new Regex ("\"((((?!\").)|\\\")*?)\"");
text = re.Replace (text,"<span style='color:purple'>\"$1\"</span>");
re = new Regex ("'(((.(?!\"\\<\\/span\\>))|\"(((?!\").)*)\"\\<\\/span\\>)*)(\r|\n|\r\n)");
text = re.Replace (text,"<span style='color:green'>//$1</span><br/>");
re = new Regex (keywords_vb);
text = re.Replace (text,"<span style='color:blue'>$1</span>");
*/
text = text.Replace ("\t","&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
text = text.Replace ("\n","<br/>");
return text;
}
//
// Helper methods and classes
//
string GetDataContext ()
{
return "op=" + CurrentOperationName + "&bnd=" + CurrentOperationBinding + "&";
}
string GetOptionSel (string v1, string v2)
{
string op = "<option ";
if (v1 == v2) op += "selected ";
return op + "value='" + v1 + "'>";
}
string WrapText (string text, int maxChars)
{
text = text.Replace(" />","/>");
string linspace = null;
int lincount = 0;
int breakpos = 0;
int linstart = 0;
bool inquotes = false;
char lastc = ' ';
string sublineIndent = "";
System.Text.StringBuilder sb = new System.Text.StringBuilder ();
for (int n=0; n<text.Length; n++)
{
char c = text [n];
if (c=='\r' || c=='\n' || n==text.Length-1)
{
sb.Append (linspace + sublineIndent + text.Substring (linstart, n-linstart+1));
linspace = null;
lincount = 0;
linstart = n+1;
breakpos = linstart;
sublineIndent = "";
lastc = c;
continue;
}
if (lastc==',' || lastc=='(')
{
if (!inquotes) breakpos = n;
}
if (lincount > maxChars && breakpos >= linstart)
{
if (linspace != null)
sb.Append (linspace + sublineIndent);
sb.Append (text.Substring (linstart, breakpos-linstart));
sb.Append ("\n");
sublineIndent = " ";
lincount = linspace.Length + sublineIndent.Length + (n-breakpos);
linstart = breakpos;
}
if (c==' ' || c=='\t')
{
if (!inquotes)
breakpos = n;
}
else if (c=='"')
{
inquotes = !inquotes;
}
else
if (linspace == null) {
linspace = text.Substring (linstart, n-linstart);
linstart = n;
}
lincount++;
lastc = c;
}
return sb.ToString ();
}
class Parameter
{
string name;
string type;
string description;
public string Name { get { return name; } set { name = value; } }
public string Type { get { return type; } set { type = value; } }
public string Description { get { return description; } set { description = value; } }
}
public class HtmlSampleGenerator: SampleGenerator
{
public HtmlSampleGenerator (ServiceDescriptionCollection services, XmlSchemas schemas)
: base (services, schemas)
{
}
protected override string GetLiteral (string s)
{
return "@placeholder!" + s + "!placeholder@";
}
}
public class SampleGenerator
{
protected ServiceDescriptionCollection descriptions;
protected XmlSchemas schemas;
XmlSchemaElement anyElement;
ArrayList queue;
SoapBindingUse currentUse;
XmlDocument document = new XmlDocument ();
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/";
class EncodedType
{
public EncodedType (string ns, XmlSchemaElement elem) { Namespace = ns; Element = elem; }
public string Namespace;
public XmlSchemaElement Element;
}
public SampleGenerator (ServiceDescriptionCollection services, XmlSchemas schemas)
{
descriptions = services;
this.schemas = schemas;
queue = new ArrayList ();
}
public string GenerateMessage (Port port, OperationBinding obin, Operation oper, string protocol, bool generateInput)
{
OperationMessage msg = null;
foreach (OperationMessage opm in oper.Messages)
{
if (opm is OperationInput && generateInput) msg = opm;
else if (opm is OperationOutput && !generateInput) msg = opm;
}
if (msg == null) return null;
switch (protocol) {
case "Soap": return GenerateHttpSoapMessage (port, obin, oper, msg);
case "HttpGet": return GenerateHttpGetMessage (port, obin, oper, msg);
case "HttpPost": return GenerateHttpPostMessage (port, obin, oper, msg);
}
return "Unknown protocol";
}
public string GenerateHttpSoapMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
{
string req = "";
if (msg is OperationInput)
{
SoapAddressBinding sab = port.Extensions.Find (typeof(SoapAddressBinding)) as SoapAddressBinding;
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
req += "POST " + new Uri (sab.Location).AbsolutePath + "\n";
req += "SOAPAction: " + sob.SoapAction + "\n";
req += "Content-Type: text/xml; charset=utf-8\n";
req += "Content-Length: " + GetLiteral ("string") + "\n";
req += "Host: " + GetLiteral ("string") + "\n\n";
}
else
{
req += "HTTP/1.0 200 OK\n";
req += "Content-Type: text/xml; charset=utf-8\n";
req += "Content-Length: " + GetLiteral ("string") + "\n\n";
}
req += GenerateSoapMessage (obin, oper, msg);
return req;
}
public string GenerateHttpGetMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
{
string req = "";
if (msg is OperationInput)
{
HttpAddressBinding sab = port.Extensions.Find (typeof(HttpAddressBinding)) as HttpAddressBinding;
HttpOperationBinding sob = obin.Extensions.Find (typeof(HttpOperationBinding)) as HttpOperationBinding;
string location = new Uri (sab.Location).AbsolutePath + sob.Location + "?" + BuildQueryString (msg);
req += "GET " + location + "\n";
req += "Host: " + GetLiteral ("string");
}
else
{
req += "HTTP/1.0 200 OK\n";
req += "Content-Type: text/xml; charset=utf-8\n";
req += "Content-Length: " + GetLiteral ("string") + "\n\n";
MimeXmlBinding mxb = (MimeXmlBinding) obin.Output.Extensions.Find (typeof(MimeXmlBinding)) as MimeXmlBinding;
if (mxb == null) return req;
Message message = descriptions.GetMessage (msg.Message);
XmlQualifiedName ename = null;
foreach (MessagePart part in message.Parts)
if (part.Name == mxb.Part) ename = part.Element;
if (ename == null) return req + GetLiteral("string");
StringWriter sw = new StringWriter ();
XmlTextWriter xtw = new XmlTextWriter (sw);
xtw.Formatting = Formatting.Indented;
currentUse = SoapBindingUse.Literal;
WriteRootElementSample (xtw, ename);
xtw.Close ();
req += sw.ToString ();
}
return req;
}
public string GenerateHttpPostMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
{
string req = "";
if (msg is OperationInput)
{
HttpAddressBinding sab = port.Extensions.Find (typeof(HttpAddressBinding)) as HttpAddressBinding;
HttpOperationBinding sob = obin.Extensions.Find (typeof(HttpOperationBinding)) as HttpOperationBinding;
string location = new Uri (sab.Location).AbsolutePath + sob.Location;
req += "POST " + location + "\n";
req += "Content-Type: application/x-www-form-urlencoded\n";
req += "Content-Length: " + GetLiteral ("string") + "\n";
req += "Host: " + GetLiteral ("string") + "\n\n";
req += BuildQueryString (msg);
}
else return GenerateHttpGetMessage (port, obin, oper, msg);
return req;
}
string BuildQueryString (OperationMessage opm)
{
string s = "";
Message msg = descriptions.GetMessage (opm.Message);
foreach (MessagePart part in msg.Parts)
{
if (s.Length != 0) s += "&";
s += part.Name + "=" + GetLiteral (part.Type.Name);
}
return s;
}
public string GenerateSoapMessage (OperationBinding obin, Operation oper, OperationMessage msg)
{
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
SoapBindingStyle style = (sob != null) ? sob.Style : SoapBindingStyle.Document;
MessageBinding msgbin = (msg is OperationInput) ? (MessageBinding) obin.Input : (MessageBinding)obin.Output;
SoapBodyBinding sbb = msgbin.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
SoapBindingUse bodyUse = (sbb != null) ? sbb.Use : SoapBindingUse.Literal;
StringWriter sw = new StringWriter ();
XmlTextWriter xtw = new XmlTextWriter (sw);
xtw.Formatting = Formatting.Indented;
xtw.WriteStartDocument ();
xtw.WriteStartElement ("soap", "Envelope", SoapEnvelopeNamespace);
xtw.WriteAttributeString ("xmlns", "xsi", null, XmlSchema.InstanceNamespace);
xtw.WriteAttributeString ("xmlns", "xsd", null, XmlSchema.Namespace);
if (bodyUse == SoapBindingUse.Encoded)
{
xtw.WriteAttributeString ("xmlns", "soapenc", null, SoapEncodingNamespace);
xtw.WriteAttributeString ("xmlns", "tns", null, msg.Message.Namespace);
}
// Serialize headers
bool writtenHeader = false;
foreach (object ob in msgbin.Extensions)
{
SoapHeaderBinding hb = ob as SoapHeaderBinding;
if (hb == null) continue;
if (!writtenHeader) {
xtw.WriteStartElement ("soap", "Header", SoapEnvelopeNamespace);
writtenHeader = true;
}
WriteHeader (xtw, hb);
}
if (writtenHeader)
xtw.WriteEndElement ();
// Serialize body
xtw.WriteStartElement ("soap", "Body", SoapEnvelopeNamespace);
currentUse = bodyUse;
WriteBody (xtw, oper, msg, sbb, style);
xtw.WriteEndElement ();
xtw.WriteEndElement ();
xtw.Close ();
return sw.ToString ();
}
void WriteHeader (XmlTextWriter xtw, SoapHeaderBinding header)
{
Message msg = descriptions.GetMessage (header.Message);
if (msg == null) throw new InvalidOperationException ("Message " + header.Message + " not found");
MessagePart part = msg.Parts [header.Part];
if (part == null) throw new InvalidOperationException ("Message part " + header.Part + " not found in message " + header.Message);
currentUse = header.Use;
if (currentUse == SoapBindingUse.Literal)
WriteRootElementSample (xtw, part.Element);
else
WriteTypeSample (xtw, part.Type);
}
void WriteBody (XmlTextWriter xtw, Operation oper, OperationMessage opm, SoapBodyBinding sbb, SoapBindingStyle style)
{
Message msg = descriptions.GetMessage (opm.Message);
if (msg.Parts.Count > 0 && msg.Parts[0].Name == "parameters")
{
MessagePart part = msg.Parts[0];
if (part.Element == XmlQualifiedName.Empty)
WriteTypeSample (xtw, part.Type);
else
WriteRootElementSample (xtw, part.Element);
}
else
{
string elemName = oper.Name;
string ns = "";
if (opm is OperationOutput) elemName += "Response";
if (style == SoapBindingStyle.Rpc) {
xtw.WriteStartElement (elemName, sbb.Namespace);
ns = sbb.Namespace;
}
foreach (MessagePart part in msg.Parts)
{
if (part.Element == XmlQualifiedName.Empty)
{
XmlSchemaElement elem = new XmlSchemaElement ();
elem.SchemaTypeName = part.Type;
elem.Name = part.Name;
WriteElementSample (xtw, ns, elem);
}
else
WriteRootElementSample (xtw, part.Element);
}
if (style == SoapBindingStyle.Rpc)
xtw.WriteEndElement ();
}
WriteQueuedTypeSamples (xtw);
}
void WriteRootElementSample (XmlTextWriter xtw, XmlQualifiedName qname)
{
XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (qname, typeof(XmlSchemaElement));
if (elem == null) throw new InvalidOperationException ("Element not found: " + qname);
WriteElementSample (xtw, qname.Namespace, elem);
}
void WriteElementSample (XmlTextWriter xtw, string ns, XmlSchemaElement elem)
{
bool sharedAnnType = false;
XmlQualifiedName root;
if (!elem.RefName.IsEmpty) {
XmlSchemaElement refElem = FindRefElement (elem);
if (refElem == null) throw new InvalidOperationException ("Global element not found: " + elem.RefName);
root = elem.RefName;
elem = refElem;
sharedAnnType = true;
}
else
root = new XmlQualifiedName (elem.Name, ns);
if (!elem.SchemaTypeName.IsEmpty)
{
XmlSchemaComplexType st = FindComplexTyype (elem.SchemaTypeName);
if (st != null)
WriteComplexTypeSample (xtw, st, root);
else
{
xtw.WriteStartElement (root.Name, root.Namespace);
if (currentUse == SoapBindingUse.Encoded)
xtw.WriteAttributeString ("type", XmlSchema.InstanceNamespace, GetQualifiedNameString (xtw, elem.SchemaTypeName));
xtw.WriteString (GetLiteral (FindBuiltInType (elem.SchemaTypeName)));
xtw.WriteEndElement ();
}
}
else if (elem.SchemaType == null)
{
xtw.WriteStartElement ("any");
xtw.WriteEndElement ();
}
else
WriteComplexTypeSample (xtw, (XmlSchemaComplexType) elem.SchemaType, root);
}
void WriteTypeSample (XmlTextWriter xtw, XmlQualifiedName qname)
{
XmlSchemaComplexType ctype = FindComplexTyype (qname);
if (ctype != null) {
WriteComplexTypeSample (xtw, ctype, qname);
return;
}
XmlSchemaSimpleType stype = (XmlSchemaSimpleType) schemas.Find (qname, typeof(XmlSchemaSimpleType));
if (stype != null) {
WriteSimpleTypeSample (xtw, stype);
return;
}
xtw.WriteString (GetLiteral (FindBuiltInType (qname)));
throw new InvalidOperationException ("Type not found: " + qname);
}
void WriteComplexTypeSample (XmlTextWriter xtw, XmlSchemaComplexType stype, XmlQualifiedName rootName)
{
WriteComplexTypeSample (xtw, stype, rootName, -1);
}
void WriteComplexTypeSample (XmlTextWriter xtw, XmlSchemaComplexType stype, XmlQualifiedName rootName, int id)
{
string ns = rootName.Namespace;
if (rootName.Name.IndexOf ("[]") != -1) rootName = arrayType;
if (currentUse == SoapBindingUse.Encoded) {
string pref = xtw.LookupPrefix (rootName.Namespace);
if (pref == null) pref = "q1";
xtw.WriteStartElement (pref, rootName.Name, rootName.Namespace);
ns = "";
}
else
xtw.WriteStartElement (rootName.Name, rootName.Namespace);
if (id != -1)
{
xtw.WriteAttributeString ("id", "id" + id);
if (rootName != arrayType)
xtw.WriteAttributeString ("type", XmlSchema.InstanceNamespace, GetQualifiedNameString (xtw, rootName));
}
WriteComplexTypeAttributes (xtw, stype);
WriteComplexTypeElements (xtw, ns, stype);
xtw.WriteEndElement ();
}
void WriteComplexTypeAttributes (XmlTextWriter xtw, XmlSchemaComplexType stype)
{
WriteAttributes (xtw, stype.Attributes, stype.AnyAttribute);
}
Dictionary<XmlSchemaComplexType,int> recursed_types = new Dictionary<XmlSchemaComplexType,int> ();
void WriteComplexTypeElements (XmlTextWriter xtw, string ns, XmlSchemaComplexType stype)
{
int prev = 0;
if (recursed_types.ContainsKey (stype))
prev = recursed_types [stype];
if (prev > 1)
return;
recursed_types [stype] = ++prev;
if (stype.Particle != null)
WriteParticleComplexContent (xtw, ns, stype.Particle);
else
{
if (stype.ContentModel is XmlSchemaSimpleContent)
WriteSimpleContent (xtw, (XmlSchemaSimpleContent)stype.ContentModel);
else if (stype.ContentModel is XmlSchemaComplexContent)
WriteComplexContent (xtw, ns, (XmlSchemaComplexContent)stype.ContentModel);
}
prev = recursed_types [stype];
recursed_types [stype] = --prev;
}
void WriteAttributes (XmlTextWriter xtw, XmlSchemaObjectCollection atts, XmlSchemaAnyAttribute anyat)
{
foreach (XmlSchemaObject at in atts)
{
if (at is XmlSchemaAttribute)
{
string ns;
XmlSchemaAttribute attr = (XmlSchemaAttribute)at;
XmlSchemaAttribute refAttr = attr;
// refAttr.Form; TODO
if (!attr.RefName.IsEmpty) {
refAttr = FindRefAttribute (attr.RefName);
if (refAttr == null) throw new InvalidOperationException ("Global attribute not found: " + attr.RefName);
}
string val;
if (!refAttr.SchemaTypeName.IsEmpty) val = FindBuiltInType (refAttr.SchemaTypeName);
else val = FindBuiltInType ((XmlSchemaSimpleType) refAttr.SchemaType);
xtw.WriteAttributeString (refAttr.Name, val);
}
else if (at is XmlSchemaAttributeGroupRef)
{
XmlSchemaAttributeGroupRef gref = (XmlSchemaAttributeGroupRef)at;
XmlSchemaAttributeGroup grp = (XmlSchemaAttributeGroup) schemas.Find (gref.RefName, typeof(XmlSchemaAttributeGroup));
WriteAttributes (xtw, grp.Attributes, grp.AnyAttribute);
}
}
if (anyat != null)
xtw.WriteAttributeString ("custom-attribute","value");
}
void WriteParticleComplexContent (XmlTextWriter xtw, string ns, XmlSchemaParticle particle)
{
WriteParticleContent (xtw, ns, particle, false);
}
void WriteParticleContent (XmlTextWriter xtw, string ns, XmlSchemaParticle particle, bool multiValue)
{
if (particle is XmlSchemaGroupRef)
particle = GetRefGroupParticle ((XmlSchemaGroupRef)particle);
if (particle.MaxOccurs > 1) multiValue = true;
if (particle is XmlSchemaSequence) {
WriteSequenceContent (xtw, ns, ((XmlSchemaSequence)particle).Items, multiValue);
}
else if (particle is XmlSchemaChoice) {
if (((XmlSchemaChoice)particle).Items.Count == 1)
WriteSequenceContent (xtw, ns, ((XmlSchemaChoice)particle).Items, multiValue);
else
WriteChoiceContent (xtw, ns, (XmlSchemaChoice)particle, multiValue);
}
else if (particle is XmlSchemaAll) {
WriteSequenceContent (xtw, ns, ((XmlSchemaAll)particle).Items, multiValue);
}
}
void WriteSequenceContent (XmlTextWriter xtw, string ns, XmlSchemaObjectCollection items, bool multiValue)
{
foreach (XmlSchemaObject item in items)
WriteContentItem (xtw, ns, item, multiValue);
}
void WriteContentItem (XmlTextWriter xtw, string ns, XmlSchemaObject item, bool multiValue)
{
if (item is XmlSchemaGroupRef)
item = GetRefGroupParticle ((XmlSchemaGroupRef)item);
if (item is XmlSchemaElement)
{
XmlSchemaElement elem = (XmlSchemaElement) item;
XmlSchemaElement refElem;
if (!elem.RefName.IsEmpty) refElem = FindRefElement (elem);
else refElem = elem;
int num = (elem.MaxOccurs == 1 && !multiValue) ? 1 : 2;
for (int n=0; n<num; n++)
{
if (currentUse == SoapBindingUse.Literal)
WriteElementSample (xtw, ns, refElem);
else
WriteRefTypeSample (xtw, ns, refElem);
}
}
else if (item is XmlSchemaAny)
{
xtw.WriteString (GetLiteral ("xml"));
}
else if (item is XmlSchemaParticle) {
WriteParticleContent (xtw, ns, (XmlSchemaParticle)item, multiValue);
}
}
void WriteChoiceContent (XmlTextWriter xtw, string ns, XmlSchemaChoice choice, bool multiValue)
{
foreach (XmlSchemaObject item in choice.Items)
WriteContentItem (xtw, ns, item, multiValue);
}
void WriteSimpleContent (XmlTextWriter xtw, XmlSchemaSimpleContent content)
{
XmlSchemaSimpleContentExtension ext = content.Content as XmlSchemaSimpleContentExtension;
if (ext != null)
WriteAttributes (xtw, ext.Attributes, ext.AnyAttribute);
XmlQualifiedName qname = GetContentBaseType (content.Content);
xtw.WriteString (GetLiteral (FindBuiltInType (qname)));
}
string FindBuiltInType (XmlQualifiedName qname)
{
if (qname.Namespace == XmlSchema.Namespace)
return qname.Name;
XmlSchemaComplexType ct = FindComplexTyype (qname);
if (ct != null)
{
XmlSchemaSimpleContent sc = ct.ContentModel as XmlSchemaSimpleContent;
if (sc == null) throw new InvalidOperationException ("Invalid schema");
return FindBuiltInType (GetContentBaseType (sc.Content));
}
XmlSchemaSimpleType st = (XmlSchemaSimpleType) schemas.Find (qname, typeof(XmlSchemaSimpleType));
if (st != null)
return FindBuiltInType (st);
throw new InvalidOperationException ("Definition of type " + qname + " not found");
}
string FindBuiltInType (XmlSchemaSimpleType st)
{
if (st.Content is XmlSchemaSimpleTypeRestriction) {
return FindBuiltInType (GetContentBaseType (st.Content));
}
else if (st.Content is XmlSchemaSimpleTypeList) {
string s = FindBuiltInType (GetContentBaseType (st.Content));
return s + " " + s + " ...";
}
else if (st.Content is XmlSchemaSimpleTypeUnion)
{
//Check if all types of the union are equal. If not, then will use anyType.
XmlSchemaSimpleTypeUnion uni = (XmlSchemaSimpleTypeUnion) st.Content;
string utype = null;
// Anonymous types are unique
if (uni.BaseTypes.Count != 0 && uni.MemberTypes.Length != 0)
return "string";
foreach (XmlQualifiedName mt in uni.MemberTypes)
{
string qn = FindBuiltInType (mt);
if (utype != null && qn != utype) return "string";
else utype = qn;
}
return utype;
}
else
return "string";
}
XmlQualifiedName GetContentBaseType (XmlSchemaObject ob)
{
if (ob is XmlSchemaSimpleContentExtension)
return ((XmlSchemaSimpleContentExtension)ob).BaseTypeName;
else if (ob is XmlSchemaSimpleContentRestriction)
return ((XmlSchemaSimpleContentRestriction)ob).BaseTypeName;
else if (ob is XmlSchemaSimpleTypeRestriction)
return ((XmlSchemaSimpleTypeRestriction)ob).BaseTypeName;
else if (ob is XmlSchemaSimpleTypeList)
return ((XmlSchemaSimpleTypeList)ob).ItemTypeName;
else
return null;
}
void WriteComplexContent (XmlTextWriter xtw, string ns, XmlSchemaComplexContent content)
{
XmlQualifiedName qname;
XmlSchemaComplexContentExtension ext = content.Content as XmlSchemaComplexContentExtension;
if (ext != null) qname = ext.BaseTypeName;
else {
XmlSchemaComplexContentRestriction rest = (XmlSchemaComplexContentRestriction)content.Content;
qname = rest.BaseTypeName;
if (qname == arrayType) {
ParseArrayType (rest, out qname);
XmlSchemaElement elem = new XmlSchemaElement ();
elem.Name = "Item";
elem.SchemaTypeName = qname;
xtw.WriteAttributeString ("arrayType", SoapEncodingNamespace, qname.Name + "[2]");
WriteContentItem (xtw, ns, elem, true);
return;
}
}
// Add base map members to this map
XmlSchemaComplexType ctype = FindComplexTyype (qname);
WriteComplexTypeAttributes (xtw, ctype);
if (ext != null) {
// Add the members of this map
WriteAttributes (xtw, ext.Attributes, ext.AnyAttribute);
if (ext.Particle != null)
WriteParticleComplexContent (xtw, ns, ext.Particle);
}
WriteComplexTypeElements (xtw, ns, ctype);
}
void ParseArrayType (XmlSchemaComplexContentRestriction rest, out XmlQualifiedName qtype)
{
XmlSchemaAttribute arrayTypeAt = FindArrayAttribute (rest.Attributes);
XmlAttribute[] uatts = arrayTypeAt.UnhandledAttributes;
if (uatts == null || uatts.Length == 0) throw new InvalidOperationException ("arrayType attribute not specified in array declaration");
XmlAttribute xat = null;
foreach (XmlAttribute at in uatts)
if (at.LocalName == "arrayType" && at.NamespaceURI == WsdlNamespace)
{ xat = at; break; }
if (xat == null)
throw new InvalidOperationException ("arrayType attribute not specified in array declaration");
string arrayType = xat.Value;
string type, ns;
int i = arrayType.LastIndexOf (":");
if (i == -1) ns = "";
else ns = arrayType.Substring (0,i);
int j = arrayType.IndexOf ("[", i+1);
if (j == -1) throw new InvalidOperationException ("Cannot parse WSDL array type: " + arrayType);
type = arrayType.Substring (i+1);
type = type.Substring (0, type.Length-2);
qtype = new XmlQualifiedName (type, ns);
}
XmlSchemaAttribute FindArrayAttribute (XmlSchemaObjectCollection atts)
{
foreach (object ob in atts)
{
XmlSchemaAttribute att = ob as XmlSchemaAttribute;
if (att != null && att.RefName == arrayTypeRefName) return att;
XmlSchemaAttributeGroupRef gref = ob as XmlSchemaAttributeGroupRef;
if (gref != null)
{
XmlSchemaAttributeGroup grp = (XmlSchemaAttributeGroup) schemas.Find (gref.RefName, typeof(XmlSchemaAttributeGroup));
att = FindArrayAttribute (grp.Attributes);
if (att != null) return att;
}
}
return null;
}
void WriteSimpleTypeSample (XmlTextWriter xtw, XmlSchemaSimpleType stype)
{
xtw.WriteString (GetLiteral (FindBuiltInType (stype)));
}
XmlSchemaParticle GetRefGroupParticle (XmlSchemaGroupRef refGroup)
{
XmlSchemaGroup grp = (XmlSchemaGroup) schemas.Find (refGroup.RefName, typeof (XmlSchemaGroup));
return grp.Particle;
}
XmlSchemaElement FindRefElement (XmlSchemaElement elem)
{
if (elem.RefName.Namespace == XmlSchema.Namespace)
{
if (anyElement != null) return anyElement;
anyElement = new XmlSchemaElement ();
anyElement.Name = "any";
anyElement.SchemaTypeName = anyType;
return anyElement;
}
return (XmlSchemaElement) schemas.Find (elem.RefName, typeof(XmlSchemaElement));
}
XmlSchemaAttribute FindRefAttribute (XmlQualifiedName refName)
{
if (refName.Namespace == XmlSchema.Namespace)
{
XmlSchemaAttribute at = new XmlSchemaAttribute ();
at.Name = refName.Name;
at.SchemaTypeName = new XmlQualifiedName ("string",XmlSchema.Namespace);
return at;
}
return (XmlSchemaAttribute) schemas.Find (refName, typeof(XmlSchemaAttribute));
}
void WriteRefTypeSample (XmlTextWriter xtw, string ns, XmlSchemaElement elem)
{
if (elem.SchemaTypeName.Namespace == XmlSchema.Namespace || schemas.Find (elem.SchemaTypeName, typeof(XmlSchemaSimpleType)) != null)
WriteElementSample (xtw, ns, elem);
else
{
xtw.WriteStartElement (elem.Name, ns);
xtw.WriteAttributeString ("href", "#id" + (queue.Count+1));
xtw.WriteEndElement ();
queue.Add (new EncodedType (ns, elem));
}
}
void WriteQueuedTypeSamples (XmlTextWriter xtw)
{
for (int n=0; n<queue.Count; n++)
{
EncodedType ec = (EncodedType) queue[n];
XmlSchemaComplexType st = FindComplexTyype (ec.Element.SchemaTypeName);
WriteComplexTypeSample (xtw, st, ec.Element.SchemaTypeName, n+1);
}
}
XmlSchemaComplexType FindComplexTyype (XmlQualifiedName qname)
{
if (qname.Name.IndexOf ("[]") != -1)
{
XmlSchemaComplexType stype = new XmlSchemaComplexType ();
stype.ContentModel = new XmlSchemaComplexContent ();
XmlSchemaComplexContentRestriction res = new XmlSchemaComplexContentRestriction ();
stype.ContentModel.Content = res;
res.BaseTypeName = arrayType;
XmlSchemaAttribute att = new XmlSchemaAttribute ();
att.RefName = arrayTypeRefName;
res.Attributes.Add (att);
XmlAttribute xat = document.CreateAttribute ("arrayType", WsdlNamespace);
xat.Value = qname.Namespace + ":" + qname.Name;
att.UnhandledAttributes = new XmlAttribute[] {xat};
return stype;
}
return (XmlSchemaComplexType) schemas.Find (qname, typeof(XmlSchemaComplexType));
}
string GetQualifiedNameString (XmlTextWriter xtw, XmlQualifiedName qname)
{
string pref = xtw.LookupPrefix (qname.Namespace);
if (pref != null) return pref + ":" + qname.Name;
xtw.WriteAttributeString ("xmlns", "q1", null, qname.Namespace);
return "q1:" + qname.Name;
}
protected virtual string GetLiteral (string s)
{
return s;
}
void GetOperationFormat (OperationBinding obin, out SoapBindingStyle style, out SoapBindingUse use)
{
style = SoapBindingStyle.Document;
use = SoapBindingUse.Literal;
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
if (sob != null) {
style = sob.Style;
SoapBodyBinding sbb = obin.Input.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
if (sbb != null)
use = sbb.Use;
}
}
}
</script>
<head runat="server">
<%
Response.Write ("<link rel=\"alternate\" type=\"text/xml\" href=\"" + Request.FilePath + "?disco\"/>");
%>
<title><%=WebServiceName%> Web Service</title>
<style type="text/css">
BODY { font-family: Arial; margin-left: 20px; margin-top: 20px; font-size: x-small}
TABLE { font-size: x-small }
.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 }
.label { font-size: small; font-weight:bold; color:darkgray }
.paramTable { font-size: x-small }
.paramTable TR { background-color: gainsboro }
.paramFormTable { font-size: x-small; padding: 10px; background-color: gainsboro }
.paramFormTable TR { background-color: gainsboro }
.paramInput { border: solid 1px gray }
.button {border: solid 1px gray }
.smallSeparator { height:3px; overflow:hidden }
.panel { background-color:whitesmoke; border: solid 1px silver; border-top: solid 1px silver }
.codePanel { background-color: white; font-size:x-small; padding:7px; border:solid 1px silver}
.code-xml { font-size:10pt; font-family:courier }
.code-cs { font-size:10pt; font-family:courier }
.code-vb { font-size:10pt; font-family:courier }
.tabLabelOn { font-weight:bold }
.tabLabelOff {color: darkgray }
.literal-placeholder {color: darkblue; font-weight:bold}
A:link { color: black; }
A:visited { color: black; }
A:active { color: black; }
A:hover { color: blue }
</style>
<script language="javascript" type="text/javascript">
var req;
function getXML (command, url, qs) {
if (url == "" || url.substring (0, 4) != "http")
return;
var post_data = null;
req = getReq ();
req.onreadystatechange = stateChange;
if (command == "GET") {
url = url + "?" + qs;
} else {
post_data = qs;
}
req.open (command, url, true);
if (command == "POST")
req.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
req.send (post_data);
}
function stateChange () {
if (req.readyState == 4) {
var node = document.getElementById("testresult_div");
var text = "";
if (req.status == 200) {
node.innerHTML = "<div class='code-xml'>" + formatXml (req.responseText) + "</div>";
} else {
var ht = "<b style='color: red'>" + formatXml (req.status + " - " + req.statusText) + "</b>";
if (req.responseText != "")
ht = ht + "\n<div class='code-xml'>" + formatXml (req.responseText) + "</div>";
node.innerHTML = ht;
}
}
}
function formatXml (text)
{
var re = / /g;
text = text.replace (re, "&nbsp;");
re = /\t/g;
text = text.replace (re, "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
re = /\<\s*(\/?)\s*(.*?)\s*(\/?)\s*\>/g;
text = text.replace (re,"{blue:&lt;$1}{maroon:$2}{blue:$3&gt;}");
re = /{(\w*):(.*?)}/g;
text = text.replace (re,"<span style='color:$1'>$2</span>");
re = /"(.*?)"/g;
text = text.replace (re,"\"<span style='color:purple'>$1</span>\"");
re = /\r\n|\r|\n/g;
text = text.replace (re, "<br/>");
return text;
}
function getReq () {
if (window.XMLHttpRequest) {
return new XMLHttpRequest(); // Firefox, Safari, ...
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
function clearForm ()
{
document.getElementById("testFormResult").style.display="none";
}
</script>
</head>
<body>
<div class="title" style="margin-left:20px">
<span class="label">Web Service</span><br>
<%=WebServiceName%>
</div>
<!--
**********************************************************
Left panel
-->
<table border="0" width="100%" cellpadding="15px" cellspacing="15px">
<tr valign="top"><td width="150px" class="panel">
<div style="width:150px"></div>
<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 name="itemtemplate">
<span class="bindingLabel"><%#FormatBindingName(DataBinder.Eval(Container.DataItem, "Name").ToString())%></span>
<asp:repeater id="OperationsRepeater" runat=server datasource='<%# ((Binding)Container.DataItem).Operations %>'>
<itemtemplate>
<a class="method" href="<%=PageName%>?<%=GetTabContext("op",null)%>op=<%#GetOpName(Container.DataItem)%>&bnd=<%#DataBinder.Eval(Container.DataItem, "Binding.Name")%>"><%#GetOpName(Container.DataItem)%></a>
<div class="smallSeparator"></div>
</itemtemplate>
</asp:repeater>
<br>
</itemtemplate>
</asp:repeater>
</td><td class="panel">
<% if (CurrentPage == "main") {%>
<!--
**********************************************************
Web service overview
-->
<p class="label">Web Service Overview</p>
<%=WebServiceDescription%>
<br/><br/>
<% if (ProfileViolations != null && ProfileViolations.Count > 0) { %>
<p class="label">Basic Profile Conformance</p>
This web service does not conform to WS-I Basic Profile v1.1
<%
Response.Write ("<ul>");
foreach (BasicProfileViolation vio in ProfileViolations) {
Response.Write ("<li><b>" + vio.NormativeStatement + "</b>: " + vio.Details);
Response.Write ("<ul>");
foreach (string ele in vio.Elements)
Response.Write ("<li>" + ele + "</li>");
Response.Write ("</ul>");
Response.Write ("</li>");
}
Response.Write ("</ul>");
}%>
<%} if (DefaultBinding == null) {%>
This service does not contain any public web method.
<%} else if (CurrentPage == "op") {%>
<!--
**********************************************************
Operation description
-->
<span class="operationTitle"><%=CurrentOperationName%></span>
<br><br>
<% WriteTabs (); %>
<br><br><br>
<% if (CurrentTab == "main") { %>
<span class="label">Input Parameters</span>
<div class="smallSeparator"></div>
<% if (InParams.Count == 0) { %>
No input parameters<br>
<% } else { %>
<table class="paramTable" cellspacing="1" cellpadding="5">
<asp:repeater id="InputParamsRepeater" runat=server>
<itemtemplate>
<tr>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Name")%></td>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Type")%></td>
</tr>
</itemtemplate>
</asp:repeater>
</table>
<% } %>
<br>
<% if (OutParams.Count > 0) { %>
<span class="label">Output Parameters</span>
<div class="smallSeparator"></div>
<table class="paramTable" cellspacing="1" cellpadding="5">
<asp:repeater id="OutputParamsRepeater" runat=server>
<itemtemplate>
<tr>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Name")%></td>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Type")%></td>
</tr>
</itemtemplate>
</asp:repeater>
</table>
<br>
<% } %>
<span class="label">Remarks</span>
<div class="smallSeparator"></div>
<%=OperationDocumentation%>
<br><br>
<span class="label">Technical information</span>
<div class="smallSeparator"></div>
Format: <%=CurrentOperationFormat%>
<br>Supported protocols: <%=CurrentOperationProtocols%>
<% } %>
<!--
**********************************************************
Operation description - Test form
-->
<% if (CurrentTab == "test") {
if (CurrentOperationSupportsTest) {%>
Enter values for the parameters and click the 'Invoke' button to test this method:<br><br>
<form action="<%=PageName%>" method="GET">
<input type="hidden" name="page" value="<%=CurrentPage%>">
<input type="hidden" name="tab" value="<%=CurrentTab%>">
<input type="hidden" name="op" value="<%=CurrentOperationName%>">
<input type="hidden" name="bnd" value="<%=CurrentOperationBinding%>">
<input type="hidden" name="ext" value="testform">
<table class="paramFormTable" cellspacing="0" cellpadding="3">
<asp:repeater id="InputFormParamsRepeater" runat=server>
<itemtemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem, "Name")%>:&nbsp;</td>
<td width="150"><input class="paramInput" type="text" size="20" name="<%#DataBinder.Eval(Container.DataItem, "Name")%>"></td>
</tr>
</itemtemplate>
</asp:repeater>
<tr><td></td><td><input class="button" type="submit" value="Invoke">&nbsp;<input class="button" type="button" onclick="clearForm()" value="Clear"></td></tr>
</table>
</form>
<div id="testFormResult" style="display:<%= (HasFormResult?"block":"none") %>">
The web service returned the following result:<br/><br/>
<div class="codePanel" id="testresult_div">
</div>
<script language="javascript">
getXML ("<%= GetOrPost () %>", "<%= GetTestResultUrl () %>", "<%= GetQS () %>");
</script>
</div>
<% } else {%>
The test form is not available for this operation because it has parameters with a complex structure.
<% } %>
<% } %>
<!--
**********************************************************
Operation description - Message Layout
-->
<% if (CurrentTab == "msg") { %>
The following are sample SOAP requests and responses for each protocol supported by this method:
<br/><br/>
<% if (IsOperationSupported ("Soap")) { %>
<span class="label">Soap</span>
<br/><br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("Soap", true)%></div></div>
<br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("Soap", false)%></div></div>
<br/>
<% } %>
<% if (IsOperationSupported ("HttpGet")) { %>
<span class="label">HTTP Get</span>
<br/><br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpGet", true)%></div></div>
<br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpGet", false)%></div></div>
<br/>
<% } %>
<% if (IsOperationSupported ("HttpPost")) { %>
<span class="label">HTTP Post</span>
<br/><br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpPost", true)%></div></div>
<br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpPost", false)%></div></div>
<br/>
<% } %>
<% } %>
<%} else if (CurrentPage == "proxy") {%>
<!--
**********************************************************
Client Proxy
-->
<form action="<%=PageName%>" name="langForm" method="GET">
Select the language for which you want to generate a proxy
<input type="hidden" name="page" value="<%=CurrentPage%>">&nbsp;
<SELECT name="lang" onchange="langForm.submit()">
<%=GetOptionSel("cs",CurrentLanguage)%>C#</option>
<%=GetOptionSel("vb",CurrentLanguage)%>Visual Basic</option>
</SELECT>
&nbsp;&nbsp;
</form>
<br>
<span class="label"><%=CurrentProxytName%></span>&nbsp;&nbsp;&nbsp;
<a href="<%=PageName + "?code=" + CurrentLanguage%>">Download</a>
<br><br>
<div class="codePanel">
<div class="code-<%=CurrentLanguage%>"><%=GetProxyCode ()%></div>
</div>
<%} else if (CurrentPage == "wsdl") {%>
<!--
**********************************************************
Service description
-->
<% if (descriptions.Count > 1 || schemas.Count > 1) {%>
The description of this web service is composed by several documents. Click on the document you want to see:
<ul>
<%
for (int n=0; n<descriptions.Count; n++)
Response.Write ("<li><a href='" + PageName + "?" + GetPageContext(null) + "doctype=wsdl&docind=" + n + "'>WSDL document " + descriptions[n].TargetNamespace + "</a></li>");
for (int n=0; n<schemas.Count; n++)
Response.Write ("<li><a href='" + PageName + "?" + GetPageContext(null) + "doctype=schema&docind=" + n + "'>Xml Schema " + schemas[n].TargetNamespace + "</a></li>");
%>
</ul>
<%} else {%>
<%}%>
<br>
<span class="label"><%=CurrentDocumentName%></span>&nbsp;&nbsp;&nbsp;
<a href="<%=PageName + "?" + CurrentDocType + "=" + CurrentDocInd %>">Download</a>
<br><br>
<div class="codePanel">
<div class="code-xml"><%=GenerateDocument ()%></div>
</div>
<%}%>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
<td width="20px"></td>
</tr>
</table>
</body>
</html>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="configProtectedData" type="System.Configuration.ProtectedConfigurationSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="connectionStrings" type="System.Configuration.ConnectionStringsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="mscorlib" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
<section name="runtime" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
<section name="assemblyBinding" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false" />
<section name="satelliteassemblies" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false" />
<section name="startup" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
<section name="system.codedom" type="System.CodeDom.Compiler.CodeDomConfigurationHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="system.data" type="System.Data.Common.DbProviderFactoriesConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="system.diagnostics" type="System.Diagnostics.DiagnosticsConfigurationHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="system.runtime.remoting" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowLocation="false"/>
<section name="system.windows.forms" type="System.Windows.Forms.WindowsFormsSection, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="windows" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false" />
<section name="strongNames" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowLocation="false"/>
<sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="anonymousIdentification" type="System.Web.Configuration.AnonymousIdentificationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="authentication" type="System.Web.Configuration.AuthenticationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="authorization" type="System.Web.Configuration.AuthorizationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="browserCaps" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="clientTarget" type="System.Web.Configuration.ClientTargetSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="compilation" type="System.Web.Configuration.CompilationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="customErrors" type="System.Web.Configuration.CustomErrorsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="deployment" type="System.Web.Configuration.DeploymentSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineOnly" />
<section name="globalization" type="System.Web.Configuration.GlobalizationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="healthMonitoring" type="System.Web.Configuration.HealthMonitoringSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="hostingEnvironment" type="System.Web.Configuration.HostingEnvironmentSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" />
<section name="httpCookies" type="System.Web.Configuration.HttpCookiesSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="httpHandlers" type="System.Web.Configuration.HttpHandlersSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="httpModules" type="System.Web.Configuration.HttpModulesSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="httpRuntime" type="System.Web.Configuration.HttpRuntimeSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="identity" type="System.Web.Configuration.IdentitySection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="machineKey" type="System.Web.Configuration.MachineKeySection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="membership" type="System.Web.Configuration.MembershipSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="mobileControls" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="deviceFilters" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="pages" type="System.Web.Configuration.PagesSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="processModel" type="System.Web.Configuration.ProcessModelSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineOnly" allowLocation="false" />
<section name="profile" type="System.Web.Configuration.ProfileSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="roleManager" type="System.Web.Configuration.RoleManagerSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="securityPolicy" type="System.Web.Configuration.SecurityPolicySection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" />
<section name="sessionPageState" type="System.Web.Configuration.SessionPageStateSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="sessionState" type="System.Web.Configuration.SessionStateSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="siteMap" type="System.Web.Configuration.SiteMapSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="trace" type="System.Web.Configuration.TraceSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="trust" type="System.Web.Configuration.TrustSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" />
<section name="urlMappings" type="System.Web.Configuration.UrlMappingsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="webControls" type="System.Web.Configuration.WebControlsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="webParts" type="System.Web.Configuration.WebPartsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="webServices" type="System.Web.Services.Configuration.WebServicesSection, System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="xhtmlConformance" type="System.Web.Configuration.XhtmlConformanceSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<sectionGroup name="caching" type="System.Web.Configuration.SystemWebCachingSectionGroup, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="cache" type="System.Web.Configuration.CacheSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="outputCache" type="System.Web.Configuration.OutputCacheSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="outputCacheSettings" type="System.Web.Configuration.OutputCacheSettingsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="sqlCacheDependency" type="System.Web.Configuration.OutputCacheSettingsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
</sectionGroup>
<section name="monoSettings" type="System.Web.Configuration.MonoSettingsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</sectionGroup>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
</sectionGroup>
</sectionGroup>
</sectionGroup>
<sectionGroup name="system.net" type="System.Net.Configuration.NetSectionGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="authenticationModules" type="System.Net.Configuration.AuthenticationModulesSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="connectionManagement" type="System.Net.Configuration.ConnectionManagementSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="defaultProxy" type="System.Net.Configuration.DefaultProxySection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<sectionGroup name="mailSettings" type="System.Net.Configuration.MailSettingsSectionGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="smtp" type="System.Net.Configuration.SmtpSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
<section name="requestCaching" type="System.Net.Configuration.RequestCachingSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="settings" type="System.Net.Configuration.SettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="webRequestModules" type="System.Net.Configuration.WebRequestModulesSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
<section name="system.drawing" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<sectionGroup name="system.serviceModel" type="System.ServiceModel.Configuration.ServiceModelSectionGroup, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="behaviors" type="System.ServiceModel.Configuration.BehaviorsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="bindings" type="System.ServiceModel.Configuration.BindingsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="client" type="System.ServiceModel.Configuration.ClientSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="commonBehaviors" type="System.ServiceModel.Configuration.CommonBehaviorsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="diagnostics" type="System.ServiceModel.Configuration.DiagnosticSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="extensions" type="System.ServiceModel.Configuration.ExtensionsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="serviceHostingEnvironment" type="System.ServiceModel.Configuration.ServiceHostingEnvironmentSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="services" type="System.ServiceModel.Configuration.ServicesSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="standardEndpoints" type="System.ServiceModel.Configuration.StandardEndpointsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<section name="routing" type="System.ServiceModel.Routing.Configuration.RoutingSection, System.ServiceModel.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<section name="protocolMapping" type="System.ServiceModel.Configuration.ProtocolMappingSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</sectionGroup>
<sectionGroup name="system.transactions" type="System.Transactions.Configuration.TransactionsSectionGroup, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null">
<section name="defaultSettings" type="System.Transactions.Configuration.DefaultSettingsSection, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"/>
<section name="machineSettings" type="System.Transactions.Configuration.MachineSettingsSection, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" allowDefinition="MachineOnly" allowExeDefinition="MachineOnly"/>
</sectionGroup>
<section name="system.webServer" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="uri" type="System.Configuration.UriSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<sectionGroup name="system.runtime.caching" type="System.Runtime.Caching.Configuration.CachingSectionGroup, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="memoryCache" type="System.Runtime.Caching.Configuration.MemoryCacheSection, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
</sectionGroup>
</configSections>
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
<add name="LocalSqliteServer" connectionString="Data Source=|DataDirectory|/aspnetdb.sqlite;version=3" providerName="Mono.Data.Sqlite"/>
</connectionStrings>
<configProtectedData defaultProvider="RsaProtectedConfigurationProvider">
<providers>
<add name="RsaProtectedConfigurationProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
description="" keyContainerName="MonoFrameworkConfigurationKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
<add name="DataProtectionConfigurationProvider" type="System.Configuration.DpapiProtectedConfigurationProvider, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
description="" useMachineProtection="true" keyEntropy="" />
</providers>
</configProtectedData>
<system.net>
<authenticationModules>
<add type="System.Net.BasicClient, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.Net.DigestClient, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.Net.NtlmClient, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</authenticationModules>
<webRequestModules>
<add prefix="http" type="System.Net.HttpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add prefix="https" type="System.Net.HttpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add prefix="file" type="System.Net.FileWebRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add prefix="ftp" type="System.Net.FtpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</webRequestModules>
<settings>
<ipv6 enabled="true"/>
</settings>
</system.net>
<system.runtime.remoting>
<application>
<channels>
<channel ref="http client" displayName="http client (delay loaded)" delayLoadAsClientChannel="true" />
<channel ref="tcp client" displayName="tcp client (delay loaded)" delayLoadAsClientChannel="true" />
<channel ref="ipc client" displayName="ipc client (delay loaded)" delayLoadAsClientChannel="true" />
</channels>
</application>
<channels>
<channel id="http" type="System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="http client" type="System.Runtime.Remoting.Channels.Http.HttpClientChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="http server" type="System.Runtime.Remoting.Channels.Http.HttpServerChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="tcp" type="System.Runtime.Remoting.Channels.Tcp.TcpChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="tcp client" type="System.Runtime.Remoting.Channels.Tcp.TcpClientChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="tcp server" type="System.Runtime.Remoting.Channels.Tcp.TcpServerChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="ipc" type="System.Runtime.Remoting.Channels.Ipc.IpcChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="ipc client" type="System.Runtime.Remoting.Channels.Ipc.IpcClientChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="ipc server" type="System.Runtime.Remoting.Channels.Ipc.IpcServerChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</channels>
<channelSinkProviders>
<clientProviders>
<formatter id="soap" type="System.Runtime.Remoting.Channels.SoapClientFormatterSinkProvider, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<formatter id="binary" type="System.Runtime.Remoting.Channels.BinaryClientFormatterSinkProvider, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</clientProviders>
<serverProviders>
<formatter id="soap" type="System.Runtime.Remoting.Channels.SoapServerFormatterSinkProvider, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<formatter id="binary" type="System.Runtime.Remoting.Channels.BinaryServerFormatterSinkProvider, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<provider id="wsdl" type="System.Runtime.Remoting.MetadataServices.SdlChannelSinkProvider, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</serverProviders>
</channelSinkProviders>
</system.runtime.remoting>
<appSettings>
<!--<add key="yourkey" value="your value" /> -->
<!--<remove key="a key defined higher in the hierarchy" /> -->
<!--<clear/> Removes all defined settings -->
</appSettings>
<system.diagnostics>
<trace autoflush="false" indentsize="4" />
</system.diagnostics>
<system.drawing>
</system.drawing>
<system.data>
<DbProviderFactories>
<add name="Mono Sqlite Data Provider" invariant="Mono.Data.SqliteClient"
description="Mono Framework Data Provider for SQLite (old version)"
type="Mono.Data.SqliteClient.SqliteFactory, Mono.Data.SqliteClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"/>
<add name="Mono Sqlite Provider" invariant="Mono.Data.Sqlite"
description="Mono Framework Data Provider for SQLite (new version)"
type="Mono.Data.Sqlite.SqliteFactory, Mono.Data.Sqlite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"/>
<add name="Odbc Data Provider" invariant="System.Data.Odbc"
description=".Net Framework Data Provider for Odbc"
type="System.Data.Odbc.OdbcFactory, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OleDb Data Provider" invariant="System.Data.OleDb"
description=".Net Framework Data Provider for OleDb"
type="System.Data.OleDb.OleDbFactory, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OracleClient Data Provider" invariant="System.Data.OracleClient"
description=".Net Framework Data Provider for Oracle"
type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient"
description=".Net Framework Data Provider for SqlServer"
type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="Sybase Data Provider" invariant="Mono.Data.SybaseClient"
description=".Net Framework Data Provider for Sybase"
type="Mono.Data.SybaseClient.SybaseClientFactory, Mono.Data.SybaseClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"/>
</DbProviderFactories>
</system.data>
<mscorlib>
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass monoMD2="Mono.Security.Cryptography.MD2Managed, Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
<cryptoClass monoMD4="Mono.Security.Cryptography.MD4Managed, Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
</cryptoClasses>
<nameEntry name="MD2" class="monoMD2" />
<nameEntry name="MD4" class="monoMD4" />
</cryptoNameMapping>
<oidMap>
<oidEntry OID="1.2.840.113549.2.2" name="MD2" />
<oidEntry OID="1.2.840.113549.2.2" name="Mono.Security.Cryptography.MD2Managed" />
<oidEntry OID="1.2.840.113549.2.4" name="MD4" />
<oidEntry OID="1.2.840.113549.2.4" name="Mono.Security.Cryptography.MD4Managed" />
</oidMap>
</cryptographySettings>
</mscorlib>
<strongNames>
<pubTokenMapping>
<!-- ECMA key -->
<map Token="b77a5c561934e089" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- Microsoft (final) key -->
<map Token="b03f5f7f11d50a3a" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- Microsoft (Web Service Enhancement) key -->
<map Token="31bf3856ad364e35" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- IBM (DB2 Data Provider) key -->
<map Token="7c307b91aa13d208" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- Silverlight 2.0 key -->
<map Token="7cec85d7bea7798e" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- XNA Framework key -->
<map Token="6d5c3888ef60e27d" PublicKey="0024000004800000940000000602000000240000525341310004000001000100f9a2641bac9847900d92a33d652ccc4e8b529360f908e7af53e57008b2a9a1938c32a160d47f795a23590557608d2c8d0c0e8846a052d070f9298281b8185343dbe5b479bd52de256f73c2a943e1a8a42065b5c918622dc14b1c0151dbd94d9a4543e7cd03e536b1b1d2d6d99af535d227ab9bdac76af9312a21d457bdf817e6" />
</pubTokenMapping>
</strongNames>
<system.web>
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpSoap12"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
<conformanceWarnings>
<add name="BasicProfile1_1"/>
</conformanceWarnings>
<wsdlHelpGenerator href="DefaultWsdlHelpGenerator.aspx" />
</webServices>
<membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
<!-- <add name="AspNetSqlMembershipProvider" type="Mainsoft.Web.Security.GenericMembershipProvider, Mainsoft.Web.Security" applicationName="/" connectionStringName="LocalSqlServer" /> -->
</providers>
</membership>
<roleManager>
<providers>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="LocalSqlServer" />
<!-- <add name="AspNetSqlRoleProvider" type="Mainsoft.Web.Security.GenericRoleProvider, Mainsoft.Web.Security" applicationName="/" connectionStringName="LocalSqlServer" /> -->
</providers>
</roleManager>
<profile>
<providers>
<add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</profile>
</system.web>
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="enableWebScript" type="System.ServiceModel.Configuration.WebScriptEnablingElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="webHttp" type="System.ServiceModel.Configuration.WebHttpElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</behaviorExtensions>
<bindingElementExtensions>
<add name="webMessageEncoding" type="System.ServiceModel.Configuration.WebMessageEncodingElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingElementExtensions>
<bindingExtensions>
<add name="webHttpBinding" type="System.ServiceModel.Configuration.WebHttpBindingCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingExtensions>
<endpointExtensions>
<add name="dynamicEndpoint" type="System.ServiceModel.Discovery.Configuration.DynamicEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="discoveryEndpoint" type="System.ServiceModel.Discovery.Configuration.DiscoveryEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="udpDiscoveryEndpoint" type="System.ServiceModel.Discovery.Configuration.UdpDiscoveryEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="announcementEndpoint" type="System.ServiceModel.Discovery.Configuration.AnnouncementEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="udpAnnouncementEndpoint" type="System.ServiceModel.Discovery.Configuration.UdpAnnouncementEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="webHttpEndpoint" type="System.ServiceModel.Configuration.WebHttpEndpointCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="webScriptEndpoint" type="System.ServiceModel.Configuration.WebScriptEndpointCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</endpointExtensions>
</extensions>
</system.serviceModel>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<settingsMap>
<map sectionType="System.Web.Configuration.MembershipSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mapperType="Mono.Web.Util.MembershipSectionMapper, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
platform="Unix">
<!-- The 'what' tag specifies which region of the section to modify. The 'value' attribute value is mapper-specific and is not defined here. It can be
any expression understood by the mapper to designate the section region to modify.
-->
<what value="providers">
<!-- 'what' can contain any number of occurrences of any three elements:
replace - replace the designated region
add - add a new entry to the region
clear - clear the region
remove - remove the designatedregion
The attributes to any of the above are freeform and are not processed by the mapper manager. They are stored verbatim for the
mapper to peruse.
-->
<replace name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqliteMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqliteServer" />
</what>
</map>
<map sectionType="System.Web.Configuration.RoleManagerSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mapperType="Mono.Web.Util.RoleManagerSectionMapper, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
platform="Unix">
<!-- The 'what' tag specifies which region of the section to modify. The 'value' attribute value is mapper-specific and is not defined here. It can be
any expression understood by the mapper to designate the section region to modify.
-->
<what value="providers">
<!-- 'what' can contain any number of occurrences of any three elements:
replace - replace the designated region
add - add a new entry to the region
clear - clear the region
remove - remove the designatedregion
The attributes to any of the above are freeform and are not processed by the mapper manager. They are stored verbatim for the
mapper to peruse.
-->
<replace name="AspNetSqlRoleProvider"
type="System.Web.Security.SqliteRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqliteServer" />
</what>
</map>
</settingsMap>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v4.0"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v4.0"/>
<providerOption name="OptionInfer" value="true"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
<system.web>
<monoSettings>
<compilersCompatibility>
<compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/nowarn:0169"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</compilersCompatibility>
</monoSettings>
<authorization>
<allow users="*" />
</authorization>
<httpHandlers>
<add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True" />
<add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
<add verb="*" path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False" />
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
<add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />
<add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" />
<add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" />
<add path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False" />
<add path="*.rem" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False" />
<add path="*.soap" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False" />
<add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.master" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.skin" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.browser" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.sitemap" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.dll.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
<add path="*.exe.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
<add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.csproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.vb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.vbproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.webinfo" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.licx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.resx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.resources" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.mdb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.vjsproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.java" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.jsl" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ldb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ad" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.dd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ldd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.sd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.adprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.lddprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.exclude" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.refresh" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<!--
<add path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
-->
<add verb="*" path="*.svc" type="System.ServiceModel.Channels.SvcHttpHandlerFactory, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add path="*.rules" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
<!--
<add path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
<add path="*.xamlx" verb="*" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
-->
<add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True" />
<add path="*" verb="*" type="System.Web.HttpMethodNotAllowedHandler" validate="True" />
</httpHandlers>
<httpModules>
<add name="OutputCache" type="System.Web.Caching.OutputCacheModule" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" />
<!--
<add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" />
-->
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<!--
<add name="PassportAuthentication" type="System.Web.Security.PassportAuthenticationModule" />
-->
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
<!--
<add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" />
-->
<add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" />
<add name="Profile" type="System.Web.Profile.ProfileModule" />
<!--
<add name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule, System.Web.Mobile, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
-->
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
<add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
<authentication mode="Forms">
<forms name=".MONOAUTH" loginUrl="login.aspx" protection="All" timeout="30" path="/">
<credentials passwordFormat="Clear">
<!--<user name="gonzalo" password="gonz"/>-->
</credentials>
</forms>
</authentication>
<machineKey validationKey="AutoGenerate" decryptionKey="AutoGenerate" validation="SHA1" />
<globalization requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding="utf-8"/>
<!--
culture="en-US"
uiculture="en-US" />
-->
<sessionState mode="InProc" />
<pages>
<namespaces>
<add namespace="System" />
<add namespace="System.Collections" />
<add namespace="System.Collections.Specialized" />
<add namespace="System.Configuration" />
<add namespace="System.Text" />
<add namespace="System.Text.RegularExpressions" />
<add namespace="System.Web" />
<add namespace="System.Web.Caching" />
<add namespace="System.Web.SessionState" />
<add namespace="System.Web.Security" />
<add namespace="System.Web.Profile" />
<add namespace="System.Web.UI" />
<add namespace="System.Web.UI.WebControls" />
<!-- <add namespace="System.Web.UI.WebControls.WebParts" /> -->
<add namespace="System.Web.UI.HtmlControls" />
</namespaces>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls.WebParts" assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls.Expressions" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.DynamicData" assembly="System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</controls>
</pages>
<webControls clientScriptsLocation="/web_scripts" />
<compilation debug="false" defaultLanguage="c#" explicit="true" strict="false" >
<assemblies>
<add assembly="mscorlib" />
<add assembly="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<!-- <add assembly="System.Web.Mobile, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> -->
<add assembly="System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<!-- <add assembly="System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<!-- <add assembly="System.ServiceModel.Channels, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<add assembly="System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<!-- <add assembly="System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<!-- <add assembly="System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<!-- <add assembly="System.WorkflowServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<!-- <add assembly="System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<!-- <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> -->
<!-- <add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> -->
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<!-- <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> -->
<add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="*" /> <!-- Add assemblies in bin directory -->
</assemblies>
<expressionBuilders>
<add expressionPrefix="Resources"
type="System.Web.Compilation.ResourceExpressionBuilder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add expressionPrefix="ConnectionStrings"
type="System.Web.Compilation.ConnectionStringsExpressionBuilder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add expressionPrefix="AppSettings"
type="System.Web.Compilation.AppSettingsExpressionBuilder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add expressionPrefix="RouteUrl" type="System.Web.Compilation.RouteUrlExpressionBuilder"/>
<!--
<add expressionPrefix="RouteValue" type="System.Web.Compilation.RouteValueExpressionBuilder"/>
-->
</expressionBuilders>
<buildProviders>
<add extension=".aspx" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".ascx" type="System.Web.Compilation.UserControlBuildProvider" />
<add extension=".master" type="System.Web.Compilation.MasterPageBuildProvider" />
<add extension=".asmx" type="System.Web.Compilation.WebServiceBuildProvider" />
<add extension=".ashx" type="System.Web.Compilation.WebHandlerBuildProvider" />
<add extension=".soap" type="System.Web.Compilation.WebServiceBuildProvider" />
<add extension=".resx" type="System.Web.Compilation.ResXBuildProvider" />
<add extension=".resources" type="System.Web.Compilation.ResourcesBuildProvider" />
<add extension=".wsdl" type="System.Web.Compilation.WsdlBuildProvider" />
<add extension=".xsd" type="System.Web.Compilation.XsdBuildProvider" />
<add extension=".js" type="System.Web.Compilation.ForceCopyBuildProvider" />
<add extension=".lic" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<add extension=".licx" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<add extension=".exclude" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<add extension=".refresh" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<!--
<add extension=".edmx" type="System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider" />
<add extension=".xoml" type="System.ServiceModel.Activation.WorkflowServiceBuildProvider, System.WorkflowServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add extension=".svc" type="System.ServiceModel.Activation.ServiceBuildProvider, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add extension=".xamlx" type="System.Xaml.Hosting.XamlBuildProvider, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
-->
</buildProviders>
</compilation>
<httpRuntime executionTimeout="110"
maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="5000" />
<clientTarget>
<add alias="ie5" userAgent="Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)" />
<add alias="ie4" userAgent="Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 4.0)" />
<add alias="uplevel" userAgent="Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 4.0)" />
<add alias="downlevel" userAgent="Unknown" />
</clientTarget>
<siteMap>
<providers>
<add name="AspNetXmlSiteMapProvider"
description="Default site map provider that reads in .sitemap xml files."
type="System.Web.XmlSiteMapProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
siteMapFile="Web.sitemap" />
</providers>
</siteMap>
</system.web>
</configuration>
<!--
This file defines some of the browsers that Microsoft's implementation provides in
<windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers\*.browser
It is not derived from any file distributed with Microsoft's implementation. Since
we can't distribute MS's browser files, we use browscap.ini to determine
browser capabilities. Then, if and only if the application contains App_Browser/*.browser
files and we are using .NET 2.0 or higher, we supplement the capabilities with the
information in those files and the files in this directory. The primary goal of this file
is provide browser definitions that might be referenced in App_Browser/*.browser files.
-->
<browsers>
<defaultBrowser id="Default">
</defaultBrowser>
<browser id="Default">
<identification>
<userAgent match="." />
</identification>
</browser>
<browser id="IE6to9" parentID="Default">
<identification>
<capability name="majorver" match="^[6-9]" />
<capability name="browser" match="^(IE|AOL)$" />
</identification>
</browser>
<browser id="Opera8to9" parentID="Default">
<identification>
<capability name="majorver" match="^[8-9]" />
<capability name="browser" match="^Opera$" />
</identification>
</browser>
<browser id="Safari" parentID="Default">
<identification>
<capability name="browser" match="^Safari$" />
</identification>
</browser>
<browser id="Mozilla" parentID="Default">
<identification>
<capability name="browser" match="^Mozilla" />
</identification>
</browser>
</browsers>
\ No newline at end of file
<%--
//
// DefaultWsdlHelpGenerator.aspx:
//
// Author:
// Lluis Sanchez Gual (lluis@ximian.com)
//
// (C) 2003 Ximian, Inc. http://www.ximian.com
//
--%>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Xml.Serialization" %>
<%@ Import Namespace="System.Xml" %>
<%@ 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.Resources" %>
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.CodeDom" %>
<%@ Import Namespace="System.CodeDom.Compiler" %>
<%@ Import Namespace="Microsoft.CSharp" %>
<%@ Import Namespace="Microsoft.VisualBasic" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Text.RegularExpressions" %>
<%@ Import Namespace="System.Security.Cryptography.X509Certificates" %>
<%@ Assembly name="System.Web.Services" %>
<%@ Page debug="true" %>
<html>
<script language="C#" runat="server">
ServiceDescriptionCollection descriptions;
XmlSchemas schemas;
string WebServiceName;
string WebServiceDescription;
string PageName;
string DefaultBinding;
ArrayList ServiceProtocols;
string CurrentOperationName;
string CurrentOperationBinding;
string OperationDocumentation;
string CurrentOperationFormat;
bool CurrentOperationSupportsTest;
ArrayList InParams;
ArrayList OutParams;
string CurrentOperationProtocols;
int CodeTextColumns = 95;
BasicProfileViolationCollection ProfileViolations;
void Page_Load(object sender, EventArgs e)
{
descriptions = (ServiceDescriptionCollection) Context.Items["wsdls"];
schemas = (XmlSchemas) Context.Items["schemas"];
ServiceDescription desc = descriptions [0];
if (schemas.Count == 0) schemas = desc.Types.Schemas;
Service service = desc.Services[0];
WebServiceName = service.Name;
if (desc.Bindings.Count == 0)
return;
DefaultBinding = desc.Bindings[0].Name;
WebServiceDescription = service.Documentation;
if (WebServiceDescription == "" || WebServiceDescription == null)
WebServiceDescription = "Description has not been provided";
ServiceProtocols = FindServiceProtocols (null);
CurrentOperationName = Request.QueryString["op"];
CurrentOperationBinding = Request.QueryString["bnd"];
if (CurrentOperationName != null) BuildOperationInfo ();
PageName = HttpUtility.UrlEncode (Path.GetFileName(Request.Path), Encoding.UTF8);
ArrayList list = new ArrayList ();
foreach (ServiceDescription sd in descriptions) {
foreach (Binding bin in sd.Bindings)
if (bin.Extensions.Find (typeof(SoapBinding)) != null) list.Add (bin);
}
BindingsRepeater.DataSource = list;
Page.DataBind();
ProfileViolations = new BasicProfileViolationCollection ();
foreach (WsiProfilesElement claims in ((WebServicesSection) WebConfigurationManager.GetSection("system.web/webServices")).ConformanceWarnings)
if (claims.Name != WsiProfiles.None)
WebServicesInteroperability.CheckConformance (claims.Name, descriptions, ProfileViolations);
}
void BuildOperationInfo ()
{
InParams = new ArrayList ();
OutParams = new ArrayList ();
Port port = FindPort (CurrentOperationBinding, null);
Binding binding = descriptions.GetBinding (port.Binding);
PortType portType = descriptions.GetPortType (binding.Type);
Operation oper = FindOperation (portType, CurrentOperationName);
OperationDocumentation = oper.Documentation;
if (OperationDocumentation == null || OperationDocumentation == "")
OperationDocumentation = "No additional remarks";
foreach (OperationMessage opm in oper.Messages)
{
if (opm is OperationInput)
BuildParameters (InParams, opm);
else if (opm is OperationOutput)
BuildParameters (OutParams, opm);
}
// Protocols supported by the operation
CurrentOperationProtocols = "";
WebServiceProtocols testProtocols = 0;
ArrayList prots = FindServiceProtocols (CurrentOperationName);
for (int n=0; n<prots.Count; n++) {
string prot = (string) prots [n];
if (n != 0) CurrentOperationProtocols += ", ";
CurrentOperationProtocols += prot;
if (prot == "HttpGet")
testProtocols |= WebServiceProtocols.HttpGet;
else if (prot == "HttpPost") {
testProtocols |= WebServiceProtocols.HttpPost;
if (Context.Request.IsLocal)
testProtocols |= WebServiceProtocols.HttpPostLocalhost;
}
}
CurrentOperationSupportsTest = (WebServicesSection.Current.EnabledProtocols & testProtocols) != 0;
// Operation format
OperationBinding obin = FindOperation (binding, CurrentOperationName);
if (obin != null)
CurrentOperationFormat = GetOperationFormat (obin);
InputParamsRepeater.DataSource = InParams;
InputFormParamsRepeater.DataSource = InParams;
OutputParamsRepeater.DataSource = OutParams;
}
void BuildParameters (ArrayList list, OperationMessage opm)
{
Message msg = descriptions.GetMessage (opm.Message);
if (msg.Parts.Count > 0 && msg.Parts[0].Name == "parameters")
{
MessagePart part = msg.Parts[0];
XmlSchemaComplexType ctype;
if (part.Element == XmlQualifiedName.Empty)
{
ctype = (XmlSchemaComplexType) schemas.Find (part.Type, typeof(XmlSchemaComplexType));
}
else
{
XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (part.Element, typeof(XmlSchemaElement));
ctype = (XmlSchemaComplexType) elem.SchemaType;
}
XmlSchemaSequence seq = ctype.Particle as XmlSchemaSequence;
if (seq == null) return;
foreach (XmlSchemaObject ob in seq.Items)
{
Parameter p = new Parameter();
p.Description = "No additional remarks";
if (ob is XmlSchemaElement)
{
XmlSchemaElement selem = GetRefElement ((XmlSchemaElement)ob);
p.Name = selem.Name;
p.Type = selem.SchemaTypeName.Name;
}
else
{
p.Name = "Unknown";
p.Type = "Unknown";
}
list.Add (p);
}
}
else
{
foreach (MessagePart part in msg.Parts)
{
Parameter p = new Parameter ();
p.Description = "No additional remarks";
p.Name = part.Name;
if (part.Element == XmlQualifiedName.Empty)
p.Type = part.Type.Name;
else
{
XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (part.Element, typeof(XmlSchemaElement));
p.Type = elem.SchemaTypeName.Name;
}
list.Add (p);
}
}
}
string GetOperationFormat (OperationBinding obin)
{
string format = "";
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
if (sob != null) {
format = sob.Style.ToString ();
SoapBodyBinding sbb = obin.Input.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
if (sbb != null)
format += " / " + sbb.Use;
}
return format;
}
XmlSchemaElement GetRefElement (XmlSchemaElement elem)
{
if (!elem.RefName.IsEmpty)
return (XmlSchemaElement) schemas.Find (elem.RefName, typeof(XmlSchemaElement));
else
return elem;
}
ArrayList FindServiceProtocols(string operName)
{
ArrayList table = new ArrayList ();
Service service = descriptions[0].Services[0];
foreach (Port port in service.Ports)
{
string prot = null;
Binding bin = descriptions.GetBinding (port.Binding);
if (bin.Extensions.Find (typeof(SoapBinding)) != null)
prot = "Soap";
else
{
HttpBinding hb = (HttpBinding) bin.Extensions.Find (typeof(HttpBinding));
if (hb != null && hb.Verb == "POST") prot = "HttpPost";
else if (hb != null && hb.Verb == "GET") prot = "HttpGet";
}
if (prot != null && operName != null)
{
if (FindOperation (bin, operName) == null)
prot = null;
}
if (prot != null && !table.Contains (prot))
table.Add (prot);
}
return table;
}
Port FindPort (string portName, string protocol)
{
Service service = descriptions[0].Services[0];
foreach (Port port in service.Ports)
{
if (portName == null)
{
Binding binding = descriptions.GetBinding (port.Binding);
if (GetProtocol (binding) == protocol) return port;
}
else if (port.Name == portName)
return port;
}
return null;
}
string GetProtocol (Binding binding)
{
if (binding.Extensions.Find (typeof(SoapBinding)) != null) return "Soap";
HttpBinding hb = (HttpBinding) binding.Extensions.Find (typeof(HttpBinding));
if (hb == null) return "";
if (hb.Verb == "POST") return "HttpPost";
if (hb.Verb == "GET") return "HttpGet";
return "";
}
Operation FindOperation (PortType portType, string name)
{
foreach (Operation oper in portType.Operations) {
if (oper.Messages.Input.Name != null) {
if (oper.Messages.Input.Name == name) return oper;
}
else
if (oper.Name == name) return oper;
}
return null;
}
OperationBinding FindOperation (Binding binding, string name)
{
foreach (OperationBinding oper in binding.Operations) {
if (oper.Input.Name != null) {
if (oper.Input.Name == name) return oper;
}
else
if (oper.Name == name) return oper;
}
return null;
}
string FormatBindingName (string name)
{
if (name == DefaultBinding) return "Methods";
else return "Methods for binding<br>" + name;
}
string GetOpName (object op)
{
OperationBinding ob = op as OperationBinding;
if (ob == null) return "";
if (ob.Input.Name != null) return ob.Input.Name;
else return ob.Name;
}
bool HasFormResult
{
get { return Request.QueryString ["ext"] == "testform"; }
}
class NoCheckCertificatePolicy : ICertificatePolicy {
public bool CheckValidationResult (ServicePoint a, X509Certificate b, WebRequest c, int d)
{
return true;
}
}
string GetOrPost ()
{
return (CurrentOperationProtocols.IndexOf ("HttpGet") >= 0) ? "GET" : "POST";
}
string GetQS ()
{
bool fill = false;
string qs = "";
NameValueCollection query_string = Request.QueryString;
for (int n = 0; n < query_string.Count; n++) {
if (fill) {
if (qs != "") qs += "&";
qs += query_string.GetKey(n) + "=" + Server.UrlEncode (query_string [n]);
}
if (query_string.GetKey(n) == "ext") fill = true;
}
return qs;
}
string GetTestResultUrl ()
{
if (!HasFormResult) return "";
string location = null;
ServiceDescription desc = descriptions [0];
Service service = desc.Services[0];
foreach (Port port in service.Ports)
if (port.Name == CurrentOperationBinding)
{
SoapAddressBinding sbi = (SoapAddressBinding) port.Extensions.Find (typeof(SoapAddressBinding));
if (sbi != null)
location = sbi.Location;
}
if (location == null)
return "Could not locate web service";
return location + "/" + CurrentOperationName;
}
string GenerateOperationMessages (string protocol, bool generateInput)
{
if (!IsOperationSupported (protocol)) return "";
Port port;
if (protocol != "Soap") port = FindPort (null, protocol);
else port = FindPort (CurrentOperationBinding, null);
Binding binding = descriptions.GetBinding (port.Binding);
OperationBinding obin = FindOperation (binding, CurrentOperationName);
PortType portType = descriptions.GetPortType (binding.Type);
Operation oper = FindOperation (portType, CurrentOperationName);
HtmlSampleGenerator sg = new HtmlSampleGenerator (descriptions, schemas);
string txt = sg.GenerateMessage (port, obin, oper, protocol, generateInput);
if (protocol == "Soap") txt = WrapText (txt,CodeTextColumns);
txt = ColorizeXml (txt);
txt = txt.Replace ("@placeholder!","<span class='literal-placeholder'>");
txt = txt.Replace ("!placeholder@","</span>");
return txt;
}
bool IsOperationSupported (string protocol)
{
if (CurrentPage != "op" || CurrentTab != "msg") return false;
if (protocol == "Soap") return true;
Port port = FindPort (null, protocol);
if (port == null) return false;
Binding binding = descriptions.GetBinding (port.Binding);
if (binding == null) return false;
return FindOperation (binding, CurrentOperationName) != null;
}
//
// Proxy code generation
//
string GetProxyCode ()
{
CodeNamespace codeNamespace = new CodeNamespace();
CodeCompileUnit codeUnit = new CodeCompileUnit();
codeUnit.Namespaces.Add (codeNamespace);
ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
foreach (ServiceDescription sd in descriptions)
importer.AddServiceDescription(sd, null, null);
foreach (XmlSchema sc in schemas)
importer.Schemas.Add (sc);
importer.Import(codeNamespace, codeUnit);
string langId = Request.QueryString ["lang"];
if (langId == null || langId == "") langId = "cs";
CodeDomProvider provider = GetProvider (langId);
ICodeGenerator generator = provider.CreateGenerator();
CodeGeneratorOptions options = new CodeGeneratorOptions();
StringWriter sw = new StringWriter ();
generator.GenerateCodeFromCompileUnit(codeUnit, sw, options);
return Colorize (WrapText (sw.ToString (), CodeTextColumns), langId);
}
public string CurrentLanguage
{
get {
string langId = Request.QueryString ["lang"];
if (langId == null || langId == "") langId = "cs";
return langId;
}
}
public string CurrentProxytName
{
get {
string lan = CurrentLanguage == "cs" ? "C#" : "Visual Basic";
return lan + " Client Proxy";
}
}
private CodeDomProvider GetProvider(string langId)
{
switch (langId.ToUpper())
{
case "CS": return new CSharpCodeProvider();
case "VB": return new VBCodeProvider();
default: return null;
}
}
//
// Document generation
//
class UTF8StringWriter : StringWriter {
public override Encoding Encoding {
get { return Encoding.UTF8; }
}
}
string GenerateDocument ()
{
UTF8StringWriter sw = new UTF8StringWriter ();
if (CurrentDocType == "wsdl")
descriptions [CurrentDocInd].Write (sw);
else if (CurrentDocType == "schema")
schemas [CurrentDocInd].Write (sw);
return Colorize (WrapText (sw.ToString (), CodeTextColumns), "xml");
}
public string CurrentDocType
{
get { return Request.QueryString ["doctype"] != null ? Request.QueryString ["doctype"] : "wsdl"; }
}
public int CurrentDocInd
{
get { return Request.QueryString ["docind"] != null ? int.Parse (Request.QueryString ["docind"]) : 0; }
}
public string CurrentDocumentName
{
get {
if (CurrentDocType == "wsdl")
return "WSDL document for namespace \"" + descriptions [CurrentDocInd].TargetNamespace + "\"";
else
return "Xml Schema for namespace \"" + schemas [CurrentDocInd].TargetNamespace + "\"";
}
}
//
// Pages and tabs
//
bool firstTab = true;
ArrayList disabledTabs = new ArrayList ();
string CurrentTab
{
get { return Request.QueryString["tab"] != null ? Request.QueryString["tab"] : "main" ; }
}
string CurrentPage
{
get { return Request.QueryString["page"] != null ? Request.QueryString["page"] : "main" ; }
}
void WriteTabs ()
{
if (CurrentOperationName != null)
{
WriteTab ("main","Overview");
WriteTab ("test","Test Form");
WriteTab ("msg","Message Layout");
}
}
void WriteTab (string id, string label)
{
if (!firstTab) Response.Write("&nbsp;|&nbsp;");
firstTab = false;
string cname = CurrentTab == id ? "tabLabelOn" : "tabLabelOff";
Response.Write ("<a href='" + PageName + "?" + GetPageContext(null) + GetDataContext() + "tab=" + id + "' style='text-decoration:none'>");
Response.Write ("<span class='" + cname + "'>" + label + "</span>");
Response.Write ("</a>");
}
string GetTabContext (string pag, string tab)
{
if (tab == null) tab = CurrentTab;
if (pag == null) pag = CurrentPage;
if (pag != CurrentPage) tab = "main";
return "page=" + pag + "&tab=" + tab + "&";
}
string GetPageContext (string pag)
{
if (pag == null) pag = CurrentPage;
return "page=" + pag + "&";
}
class Tab
{
public string Id;
public string Label;
}
//
// Syntax coloring
//
static string keywords_cs =
"(\\babstract\\b|\\bevent\\b|\\bnew\\b|\\bstruct\\b|\\bas\\b|\\bexplicit\\b|\\bnull\\b|\\bswitch\\b|\\bbase\\b|\\bextern\\b|" +
"\\bobject\\b|\\bthis\\b|\\bbool\\b|\\bfalse\\b|\\boperator\\b|\\bthrow\\b|\\bbreak\\b|\\bfinally\\b|\\bout\\b|\\btrue\\b|" +
"\\bbyte\\b|\\bfixed\\b|\\boverride\\b|\\btry\\b|\\bcase\\b|\\bfloat\\b|\\bparams\\b|\\btypeof\\b|\\bcatch\\b|\\bfor\\b|" +
"\\bprivate\\b|\\buint\\b|\\bchar\\b|\\bforeach\\b|\\bprotected\\b|\\bulong\\b|\\bchecked\\b|\\bgoto\\b|\\bpublic\\b|" +
"\\bunchecked\\b|\\bclass\\b|\\bif\\b|\\breadonly\\b|\\bunsafe\\b|\\bconst\\b|\\bimplicit\\b|\\bref\\b|\\bushort\\b|" +
"\\bcontinue\\b|\\bin\\b|\\breturn\\b|\\busing\\b|\\bdecimal\\b|\\bint\\b|\\bsbyte\\b|\\bvirtual\\b|\\bdefault\\b|" +
"\\binterface\\b|\\bsealed\\b|\\bvolatile\\b|\\bdelegate\\b|\\binternal\\b|\\bshort\\b|\\bvoid\\b|\\bdo\\b|\\bis\\b|" +
"\\bsizeof\\b|\\bwhile\\b|\\bdouble\\b|\\block\\b|\\bstackalloc\\b|\\belse\\b|\\blong\\b|\\bstatic\\b|\\benum\\b|" +
"\\bnamespace\\b|\\bstring\\b)";
static string keywords_vb =
"(\\bAddHandler\\b|\\bAddressOf\\b|\\bAlias\\b|\\bAnd\\b|\\bAndAlso\\b|\\bAnsi\\b|\\bAs\\b|\\bAssembly\\b|" +
"\\bAuto\\b|\\bBoolean\\b|\\bByRef\\b|\\bByte\\b|\\bByVal\\b|\\bCall\\b|\\bCase\\b|\\bCatch\\b|" +
"\\bCBool\\b|\\bCByte\\b|\\bCChar\\b|\\bCDate\\b|\\bCDec\\b|\\bCDbl\\b|\\bChar\\b|\\bCInt\\b|" +
"\\bClass\\b|\\bCLng\\b|\\bCObj\\b|\\bConst\\b|\\bCShort\\b|\\bCSng\\b|\\bCStr\\b|\\bCType\\b|" +
"\\bDate\\b|\\bDecimal\\b|\\bDeclare\\b|\\bDefault\\b|\\bDelegate\\b|\\bDim\\b|\\bDirectCast\\b|\\bDo\\b|" +
"\\bDouble\\b|\\bEach\\b|\\bElse\\b|\\bElseIf\\b|\\bEnd\\b|\\bEnum\\b|\\bErase\\b|\\bError\\b|" +
"\\bEvent\\b|\\bExit\\b|\\bFalse\\b|\\bFinally\\b|\\bFor\\b|\\bFriend\\b|\\bFunction\\b|\\bGet\\b|" +
"\\bGetType\\b|\\bGoSub\\b|\\bGoTo\\b|\\bHandles\\b|\\bIf\\b|\\bImplements\\b|\\bImports\\b|\\bIn\\b|" +
"\\bInherits\\b|\\bInteger\\b|\\bInterface\\b|\\bIs\\b|\\bLet\\b|\\bLib\\b|\\bLike\\b|\\bLong\\b|" +
"\\bLoop\\b|\\bMe\\b|\\bMod\\b|\\bModule\\b|\\bMustInherit\\b|\\bMustOverride\\b|\\bMyBase\\b|\\bMyClass\\b|" +
"\\bNamespace\\b|\\bNew\\b|\\bNext\\b|\\bNot\\b|\\bNothing\\b|\\bNotInheritable\\b|\\bNotOverridable\\b|\\bObject\\b|" +
"\\bOn\\b|\\bOption\\b|\\bOptional\\b|\\bOr\\b|\\bOrElse\\b|\\bOverloads\\b|\\bOverridable\\b|\\bOverrides\\b|" +
"\\bParamArray\\b|\\bPreserve\\b|\\bPrivate\\b|\\bProperty\\b|\\bProtected\\b|\\bPublic\\b|\\bRaiseEvent\\b|\\bReadOnly\\b|" +
"\\bReDim\\b|\\bREM\\b|\\bRemoveHandler\\b|\\bResume\\b|\\bReturn\\b|\\bSelect\\b|\\bSet\\b|\\bShadows\\b|" +
"\\bShared\\b|\\bShort\\b|\\bSingle\\b|\\bStatic\\b|\\bStep\\b|\\bStop\\b|\\bString\\b|\\bStructure\\b|" +
"\\bSub\\b|\\bSyncLock\\b|\\bThen\\b|\\bThrow\\b|\\bTo\\b|\\bTrue\\b|\\bTry\\b|\\bTypeOf\\b|" +
"\\bUnicode\\b|\\bUntil\\b|\\bVariant\\b|\\bWhen\\b|\\bWhile\\b|\\bWith\\b|\\bWithEvents\\b|\\bWriteOnly\\b|\\bXor\\b)";
string Colorize (string text, string lang)
{
if (lang == "xml") return ColorizeXml (text);
else if (lang == "cs") return ColorizeCs (text);
else if (lang == "vb") return ColorizeVb (text);
else return text;
}
string ColorizeXml (string text)
{
text = text.Replace (" ", "&nbsp;");
Regex re = new Regex ("\r\n|\r|\n");
text = re.Replace (text, "_br_");
re = new Regex ("<\\s*(\\/?)\\s*([\\s\\S]*?)\\s*(\\/?)\\s*>");
text = re.Replace (text,"{blue:&lt;$1}{maroon:$2}{blue:$3&gt;}");
re = new Regex ("\\{(\\w*):([\\s\\S]*?)\\}");
text = re.Replace (text,"<span style='color:$1'>$2</span>");
re = new Regex ("\"(.*?)\"");
text = re.Replace (text,"\"<span style='color:purple'>$1</span>\"");
text = text.Replace ("\t", "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
text = text.Replace ("_br_", "<br>");
return text;
}
string ColorizeCs (string text)
{
text = text.Replace (" ", "&nbsp;");
text = text.Replace ("<", "&lt;");
text = text.Replace (">", "&gt;");
Regex re = new Regex ("\"((((?!\").)|\\\")*?)\"");
text = re.Replace (text,"<span style='color:purple'>\"$1\"</span>");
re = new Regex ("//(((.(?!\"</span>))|\"(((?!\").)*)\"</span>)*)(\r|\n|\r\n)");
text = re.Replace (text,"<span style='color:green'>//$1</span><br/>");
re = new Regex (keywords_cs);
text = re.Replace (text,"<span style='color:blue'>$1</span>");
text = text.Replace ("\t","&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
text = text.Replace ("\n","<br/>");
return text;
}
string ColorizeVb (string text)
{
text = text.Replace (" ", "&nbsp;");
/* Regex re = new Regex ("\"((((?!\").)|\\\")*?)\"");
text = re.Replace (text,"<span style='color:purple'>\"$1\"</span>");
re = new Regex ("'(((.(?!\"\\<\\/span\\>))|\"(((?!\").)*)\"\\<\\/span\\>)*)(\r|\n|\r\n)");
text = re.Replace (text,"<span style='color:green'>//$1</span><br/>");
re = new Regex (keywords_vb);
text = re.Replace (text,"<span style='color:blue'>$1</span>");
*/
text = text.Replace ("\t","&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
text = text.Replace ("\n","<br/>");
return text;
}
//
// Helper methods and classes
//
string GetDataContext ()
{
return "op=" + CurrentOperationName + "&bnd=" + CurrentOperationBinding + "&";
}
string GetOptionSel (string v1, string v2)
{
string op = "<option ";
if (v1 == v2) op += "selected ";
return op + "value='" + v1 + "'>";
}
string WrapText (string text, int maxChars)
{
text = text.Replace(" />","/>");
string linspace = null;
int lincount = 0;
int breakpos = 0;
int linstart = 0;
bool inquotes = false;
char lastc = ' ';
string sublineIndent = "";
System.Text.StringBuilder sb = new System.Text.StringBuilder ();
for (int n=0; n<text.Length; n++)
{
char c = text [n];
if (c=='\r' || c=='\n' || n==text.Length-1)
{
sb.Append (linspace + sublineIndent + text.Substring (linstart, n-linstart+1));
linspace = null;
lincount = 0;
linstart = n+1;
breakpos = linstart;
sublineIndent = "";
lastc = c;
continue;
}
if (lastc==',' || lastc=='(')
{
if (!inquotes) breakpos = n;
}
if (lincount > maxChars && breakpos >= linstart)
{
if (linspace != null)
sb.Append (linspace + sublineIndent);
sb.Append (text.Substring (linstart, breakpos-linstart));
sb.Append ("\n");
sublineIndent = " ";
lincount = linspace.Length + sublineIndent.Length + (n-breakpos);
linstart = breakpos;
}
if (c==' ' || c=='\t')
{
if (!inquotes)
breakpos = n;
}
else if (c=='"')
{
inquotes = !inquotes;
}
else
if (linspace == null) {
linspace = text.Substring (linstart, n-linstart);
linstart = n;
}
lincount++;
lastc = c;
}
return sb.ToString ();
}
class Parameter
{
string name;
string type;
string description;
public string Name { get { return name; } set { name = value; } }
public string Type { get { return type; } set { type = value; } }
public string Description { get { return description; } set { description = value; } }
}
public class HtmlSampleGenerator: SampleGenerator
{
public HtmlSampleGenerator (ServiceDescriptionCollection services, XmlSchemas schemas)
: base (services, schemas)
{
}
protected override string GetLiteral (string s)
{
return "@placeholder!" + s + "!placeholder@";
}
}
public class SampleGenerator
{
protected ServiceDescriptionCollection descriptions;
protected XmlSchemas schemas;
XmlSchemaElement anyElement;
ArrayList queue;
SoapBindingUse currentUse;
XmlDocument document = new XmlDocument ();
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/";
class EncodedType
{
public EncodedType (string ns, XmlSchemaElement elem) { Namespace = ns; Element = elem; }
public string Namespace;
public XmlSchemaElement Element;
}
public SampleGenerator (ServiceDescriptionCollection services, XmlSchemas schemas)
{
descriptions = services;
this.schemas = schemas;
queue = new ArrayList ();
}
public string GenerateMessage (Port port, OperationBinding obin, Operation oper, string protocol, bool generateInput)
{
OperationMessage msg = null;
foreach (OperationMessage opm in oper.Messages)
{
if (opm is OperationInput && generateInput) msg = opm;
else if (opm is OperationOutput && !generateInput) msg = opm;
}
if (msg == null) return null;
switch (protocol) {
case "Soap": return GenerateHttpSoapMessage (port, obin, oper, msg);
case "HttpGet": return GenerateHttpGetMessage (port, obin, oper, msg);
case "HttpPost": return GenerateHttpPostMessage (port, obin, oper, msg);
}
return "Unknown protocol";
}
public string GenerateHttpSoapMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
{
string req = "";
if (msg is OperationInput)
{
SoapAddressBinding sab = port.Extensions.Find (typeof(SoapAddressBinding)) as SoapAddressBinding;
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
req += "POST " + new Uri (sab.Location).AbsolutePath + "\n";
req += "SOAPAction: " + sob.SoapAction + "\n";
req += "Content-Type: text/xml; charset=utf-8\n";
req += "Content-Length: " + GetLiteral ("string") + "\n";
req += "Host: " + GetLiteral ("string") + "\n\n";
}
else
{
req += "HTTP/1.0 200 OK\n";
req += "Content-Type: text/xml; charset=utf-8\n";
req += "Content-Length: " + GetLiteral ("string") + "\n\n";
}
req += GenerateSoapMessage (obin, oper, msg);
return req;
}
public string GenerateHttpGetMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
{
string req = "";
if (msg is OperationInput)
{
HttpAddressBinding sab = port.Extensions.Find (typeof(HttpAddressBinding)) as HttpAddressBinding;
HttpOperationBinding sob = obin.Extensions.Find (typeof(HttpOperationBinding)) as HttpOperationBinding;
string location = new Uri (sab.Location).AbsolutePath + sob.Location + "?" + BuildQueryString (msg);
req += "GET " + location + "\n";
req += "Host: " + GetLiteral ("string");
}
else
{
req += "HTTP/1.0 200 OK\n";
req += "Content-Type: text/xml; charset=utf-8\n";
req += "Content-Length: " + GetLiteral ("string") + "\n\n";
MimeXmlBinding mxb = (MimeXmlBinding) obin.Output.Extensions.Find (typeof(MimeXmlBinding)) as MimeXmlBinding;
if (mxb == null) return req;
Message message = descriptions.GetMessage (msg.Message);
XmlQualifiedName ename = null;
foreach (MessagePart part in message.Parts)
if (part.Name == mxb.Part) ename = part.Element;
if (ename == null) return req + GetLiteral("string");
StringWriter sw = new StringWriter ();
XmlTextWriter xtw = new XmlTextWriter (sw);
xtw.Formatting = Formatting.Indented;
currentUse = SoapBindingUse.Literal;
WriteRootElementSample (xtw, ename);
xtw.Close ();
req += sw.ToString ();
}
return req;
}
public string GenerateHttpPostMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
{
string req = "";
if (msg is OperationInput)
{
HttpAddressBinding sab = port.Extensions.Find (typeof(HttpAddressBinding)) as HttpAddressBinding;
HttpOperationBinding sob = obin.Extensions.Find (typeof(HttpOperationBinding)) as HttpOperationBinding;
string location = new Uri (sab.Location).AbsolutePath + sob.Location;
req += "POST " + location + "\n";
req += "Content-Type: application/x-www-form-urlencoded\n";
req += "Content-Length: " + GetLiteral ("string") + "\n";
req += "Host: " + GetLiteral ("string") + "\n\n";
req += BuildQueryString (msg);
}
else return GenerateHttpGetMessage (port, obin, oper, msg);
return req;
}
string BuildQueryString (OperationMessage opm)
{
string s = "";
Message msg = descriptions.GetMessage (opm.Message);
foreach (MessagePart part in msg.Parts)
{
if (s.Length != 0) s += "&";
s += part.Name + "=" + GetLiteral (part.Type.Name);
}
return s;
}
public string GenerateSoapMessage (OperationBinding obin, Operation oper, OperationMessage msg)
{
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
SoapBindingStyle style = (sob != null) ? sob.Style : SoapBindingStyle.Document;
MessageBinding msgbin = (msg is OperationInput) ? (MessageBinding) obin.Input : (MessageBinding)obin.Output;
SoapBodyBinding sbb = msgbin.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
SoapBindingUse bodyUse = (sbb != null) ? sbb.Use : SoapBindingUse.Literal;
StringWriter sw = new StringWriter ();
XmlTextWriter xtw = new XmlTextWriter (sw);
xtw.Formatting = Formatting.Indented;
xtw.WriteStartDocument ();
xtw.WriteStartElement ("soap", "Envelope", SoapEnvelopeNamespace);
xtw.WriteAttributeString ("xmlns", "xsi", null, XmlSchema.InstanceNamespace);
xtw.WriteAttributeString ("xmlns", "xsd", null, XmlSchema.Namespace);
if (bodyUse == SoapBindingUse.Encoded)
{
xtw.WriteAttributeString ("xmlns", "soapenc", null, SoapEncodingNamespace);
xtw.WriteAttributeString ("xmlns", "tns", null, msg.Message.Namespace);
}
// Serialize headers
bool writtenHeader = false;
foreach (object ob in msgbin.Extensions)
{
SoapHeaderBinding hb = ob as SoapHeaderBinding;
if (hb == null) continue;
if (!writtenHeader) {
xtw.WriteStartElement ("soap", "Header", SoapEnvelopeNamespace);
writtenHeader = true;
}
WriteHeader (xtw, hb);
}
if (writtenHeader)
xtw.WriteEndElement ();
// Serialize body
xtw.WriteStartElement ("soap", "Body", SoapEnvelopeNamespace);
currentUse = bodyUse;
WriteBody (xtw, oper, msg, sbb, style);
xtw.WriteEndElement ();
xtw.WriteEndElement ();
xtw.Close ();
return sw.ToString ();
}
void WriteHeader (XmlTextWriter xtw, SoapHeaderBinding header)
{
Message msg = descriptions.GetMessage (header.Message);
if (msg == null) throw new InvalidOperationException ("Message " + header.Message + " not found");
MessagePart part = msg.Parts [header.Part];
if (part == null) throw new InvalidOperationException ("Message part " + header.Part + " not found in message " + header.Message);
currentUse = header.Use;
if (currentUse == SoapBindingUse.Literal)
WriteRootElementSample (xtw, part.Element);
else
WriteTypeSample (xtw, part.Type);
}
void WriteBody (XmlTextWriter xtw, Operation oper, OperationMessage opm, SoapBodyBinding sbb, SoapBindingStyle style)
{
Message msg = descriptions.GetMessage (opm.Message);
if (msg.Parts.Count > 0 && msg.Parts[0].Name == "parameters")
{
MessagePart part = msg.Parts[0];
if (part.Element == XmlQualifiedName.Empty)
WriteTypeSample (xtw, part.Type);
else
WriteRootElementSample (xtw, part.Element);
}
else
{
string elemName = oper.Name;
string ns = "";
if (opm is OperationOutput) elemName += "Response";
if (style == SoapBindingStyle.Rpc) {
xtw.WriteStartElement (elemName, sbb.Namespace);
ns = sbb.Namespace;
}
foreach (MessagePart part in msg.Parts)
{
if (part.Element == XmlQualifiedName.Empty)
{
XmlSchemaElement elem = new XmlSchemaElement ();
elem.SchemaTypeName = part.Type;
elem.Name = part.Name;
WriteElementSample (xtw, ns, elem);
}
else
WriteRootElementSample (xtw, part.Element);
}
if (style == SoapBindingStyle.Rpc)
xtw.WriteEndElement ();
}
WriteQueuedTypeSamples (xtw);
}
void WriteRootElementSample (XmlTextWriter xtw, XmlQualifiedName qname)
{
XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (qname, typeof(XmlSchemaElement));
if (elem == null) throw new InvalidOperationException ("Element not found: " + qname);
WriteElementSample (xtw, qname.Namespace, elem);
}
void WriteElementSample (XmlTextWriter xtw, string ns, XmlSchemaElement elem)
{
bool sharedAnnType = false;
XmlQualifiedName root;
if (!elem.RefName.IsEmpty) {
XmlSchemaElement refElem = FindRefElement (elem);
if (refElem == null) throw new InvalidOperationException ("Global element not found: " + elem.RefName);
root = elem.RefName;
elem = refElem;
sharedAnnType = true;
}
else
root = new XmlQualifiedName (elem.Name, ns);
if (!elem.SchemaTypeName.IsEmpty)
{
XmlSchemaComplexType st = FindComplexTyype (elem.SchemaTypeName);
if (st != null)
WriteComplexTypeSample (xtw, st, root);
else
{
xtw.WriteStartElement (root.Name, root.Namespace);
if (currentUse == SoapBindingUse.Encoded)
xtw.WriteAttributeString ("type", XmlSchema.InstanceNamespace, GetQualifiedNameString (xtw, elem.SchemaTypeName));
xtw.WriteString (GetLiteral (FindBuiltInType (elem.SchemaTypeName)));
xtw.WriteEndElement ();
}
}
else if (elem.SchemaType == null)
{
xtw.WriteStartElement ("any");
xtw.WriteEndElement ();
}
else
WriteComplexTypeSample (xtw, (XmlSchemaComplexType) elem.SchemaType, root);
}
void WriteTypeSample (XmlTextWriter xtw, XmlQualifiedName qname)
{
XmlSchemaComplexType ctype = FindComplexTyype (qname);
if (ctype != null) {
WriteComplexTypeSample (xtw, ctype, qname);
return;
}
XmlSchemaSimpleType stype = (XmlSchemaSimpleType) schemas.Find (qname, typeof(XmlSchemaSimpleType));
if (stype != null) {
WriteSimpleTypeSample (xtw, stype);
return;
}
xtw.WriteString (GetLiteral (FindBuiltInType (qname)));
throw new InvalidOperationException ("Type not found: " + qname);
}
void WriteComplexTypeSample (XmlTextWriter xtw, XmlSchemaComplexType stype, XmlQualifiedName rootName)
{
WriteComplexTypeSample (xtw, stype, rootName, -1);
}
void WriteComplexTypeSample (XmlTextWriter xtw, XmlSchemaComplexType stype, XmlQualifiedName rootName, int id)
{
string ns = rootName.Namespace;
if (rootName.Name.IndexOf ("[]") != -1) rootName = arrayType;
if (currentUse == SoapBindingUse.Encoded) {
string pref = xtw.LookupPrefix (rootName.Namespace);
if (pref == null) pref = "q1";
xtw.WriteStartElement (pref, rootName.Name, rootName.Namespace);
ns = "";
}
else
xtw.WriteStartElement (rootName.Name, rootName.Namespace);
if (id != -1)
{
xtw.WriteAttributeString ("id", "id" + id);
if (rootName != arrayType)
xtw.WriteAttributeString ("type", XmlSchema.InstanceNamespace, GetQualifiedNameString (xtw, rootName));
}
WriteComplexTypeAttributes (xtw, stype);
WriteComplexTypeElements (xtw, ns, stype);
xtw.WriteEndElement ();
}
void WriteComplexTypeAttributes (XmlTextWriter xtw, XmlSchemaComplexType stype)
{
WriteAttributes (xtw, stype.Attributes, stype.AnyAttribute);
}
Dictionary<XmlSchemaComplexType,int> recursed_types = new Dictionary<XmlSchemaComplexType,int> ();
void WriteComplexTypeElements (XmlTextWriter xtw, string ns, XmlSchemaComplexType stype)
{
int prev = 0;
if (recursed_types.ContainsKey (stype))
prev = recursed_types [stype];
if (prev > 1)
return;
recursed_types [stype] = ++prev;
if (stype.Particle != null)
WriteParticleComplexContent (xtw, ns, stype.Particle);
else
{
if (stype.ContentModel is XmlSchemaSimpleContent)
WriteSimpleContent (xtw, (XmlSchemaSimpleContent)stype.ContentModel);
else if (stype.ContentModel is XmlSchemaComplexContent)
WriteComplexContent (xtw, ns, (XmlSchemaComplexContent)stype.ContentModel);
}
prev = recursed_types [stype];
recursed_types [stype] = --prev;
}
void WriteAttributes (XmlTextWriter xtw, XmlSchemaObjectCollection atts, XmlSchemaAnyAttribute anyat)
{
foreach (XmlSchemaObject at in atts)
{
if (at is XmlSchemaAttribute)
{
string ns;
XmlSchemaAttribute attr = (XmlSchemaAttribute)at;
XmlSchemaAttribute refAttr = attr;
// refAttr.Form; TODO
if (!attr.RefName.IsEmpty) {
refAttr = FindRefAttribute (attr.RefName);
if (refAttr == null) throw new InvalidOperationException ("Global attribute not found: " + attr.RefName);
}
string val;
if (!refAttr.SchemaTypeName.IsEmpty) val = FindBuiltInType (refAttr.SchemaTypeName);
else val = FindBuiltInType ((XmlSchemaSimpleType) refAttr.SchemaType);
xtw.WriteAttributeString (refAttr.Name, val);
}
else if (at is XmlSchemaAttributeGroupRef)
{
XmlSchemaAttributeGroupRef gref = (XmlSchemaAttributeGroupRef)at;
XmlSchemaAttributeGroup grp = (XmlSchemaAttributeGroup) schemas.Find (gref.RefName, typeof(XmlSchemaAttributeGroup));
WriteAttributes (xtw, grp.Attributes, grp.AnyAttribute);
}
}
if (anyat != null)
xtw.WriteAttributeString ("custom-attribute","value");
}
void WriteParticleComplexContent (XmlTextWriter xtw, string ns, XmlSchemaParticle particle)
{
WriteParticleContent (xtw, ns, particle, false);
}
void WriteParticleContent (XmlTextWriter xtw, string ns, XmlSchemaParticle particle, bool multiValue)
{
if (particle is XmlSchemaGroupRef)
particle = GetRefGroupParticle ((XmlSchemaGroupRef)particle);
if (particle.MaxOccurs > 1) multiValue = true;
if (particle is XmlSchemaSequence) {
WriteSequenceContent (xtw, ns, ((XmlSchemaSequence)particle).Items, multiValue);
}
else if (particle is XmlSchemaChoice) {
if (((XmlSchemaChoice)particle).Items.Count == 1)
WriteSequenceContent (xtw, ns, ((XmlSchemaChoice)particle).Items, multiValue);
else
WriteChoiceContent (xtw, ns, (XmlSchemaChoice)particle, multiValue);
}
else if (particle is XmlSchemaAll) {
WriteSequenceContent (xtw, ns, ((XmlSchemaAll)particle).Items, multiValue);
}
}
void WriteSequenceContent (XmlTextWriter xtw, string ns, XmlSchemaObjectCollection items, bool multiValue)
{
foreach (XmlSchemaObject item in items)
WriteContentItem (xtw, ns, item, multiValue);
}
void WriteContentItem (XmlTextWriter xtw, string ns, XmlSchemaObject item, bool multiValue)
{
if (item is XmlSchemaGroupRef)
item = GetRefGroupParticle ((XmlSchemaGroupRef)item);
if (item is XmlSchemaElement)
{
XmlSchemaElement elem = (XmlSchemaElement) item;
XmlSchemaElement refElem;
if (!elem.RefName.IsEmpty) refElem = FindRefElement (elem);
else refElem = elem;
int num = (elem.MaxOccurs == 1 && !multiValue) ? 1 : 2;
for (int n=0; n<num; n++)
{
if (currentUse == SoapBindingUse.Literal)
WriteElementSample (xtw, ns, refElem);
else
WriteRefTypeSample (xtw, ns, refElem);
}
}
else if (item is XmlSchemaAny)
{
xtw.WriteString (GetLiteral ("xml"));
}
else if (item is XmlSchemaParticle) {
WriteParticleContent (xtw, ns, (XmlSchemaParticle)item, multiValue);
}
}
void WriteChoiceContent (XmlTextWriter xtw, string ns, XmlSchemaChoice choice, bool multiValue)
{
foreach (XmlSchemaObject item in choice.Items)
WriteContentItem (xtw, ns, item, multiValue);
}
void WriteSimpleContent (XmlTextWriter xtw, XmlSchemaSimpleContent content)
{
XmlSchemaSimpleContentExtension ext = content.Content as XmlSchemaSimpleContentExtension;
if (ext != null)
WriteAttributes (xtw, ext.Attributes, ext.AnyAttribute);
XmlQualifiedName qname = GetContentBaseType (content.Content);
xtw.WriteString (GetLiteral (FindBuiltInType (qname)));
}
string FindBuiltInType (XmlQualifiedName qname)
{
if (qname.Namespace == XmlSchema.Namespace)
return qname.Name;
XmlSchemaComplexType ct = FindComplexTyype (qname);
if (ct != null)
{
XmlSchemaSimpleContent sc = ct.ContentModel as XmlSchemaSimpleContent;
if (sc == null) throw new InvalidOperationException ("Invalid schema");
return FindBuiltInType (GetContentBaseType (sc.Content));
}
XmlSchemaSimpleType st = (XmlSchemaSimpleType) schemas.Find (qname, typeof(XmlSchemaSimpleType));
if (st != null)
return FindBuiltInType (st);
throw new InvalidOperationException ("Definition of type " + qname + " not found");
}
string FindBuiltInType (XmlSchemaSimpleType st)
{
if (st.Content is XmlSchemaSimpleTypeRestriction) {
return FindBuiltInType (GetContentBaseType (st.Content));
}
else if (st.Content is XmlSchemaSimpleTypeList) {
string s = FindBuiltInType (GetContentBaseType (st.Content));
return s + " " + s + " ...";
}
else if (st.Content is XmlSchemaSimpleTypeUnion)
{
//Check if all types of the union are equal. If not, then will use anyType.
XmlSchemaSimpleTypeUnion uni = (XmlSchemaSimpleTypeUnion) st.Content;
string utype = null;
// Anonymous types are unique
if (uni.BaseTypes.Count != 0 && uni.MemberTypes.Length != 0)
return "string";
foreach (XmlQualifiedName mt in uni.MemberTypes)
{
string qn = FindBuiltInType (mt);
if (utype != null && qn != utype) return "string";
else utype = qn;
}
return utype;
}
else
return "string";
}
XmlQualifiedName GetContentBaseType (XmlSchemaObject ob)
{
if (ob is XmlSchemaSimpleContentExtension)
return ((XmlSchemaSimpleContentExtension)ob).BaseTypeName;
else if (ob is XmlSchemaSimpleContentRestriction)
return ((XmlSchemaSimpleContentRestriction)ob).BaseTypeName;
else if (ob is XmlSchemaSimpleTypeRestriction)
return ((XmlSchemaSimpleTypeRestriction)ob).BaseTypeName;
else if (ob is XmlSchemaSimpleTypeList)
return ((XmlSchemaSimpleTypeList)ob).ItemTypeName;
else
return null;
}
void WriteComplexContent (XmlTextWriter xtw, string ns, XmlSchemaComplexContent content)
{
XmlQualifiedName qname;
XmlSchemaComplexContentExtension ext = content.Content as XmlSchemaComplexContentExtension;
if (ext != null) qname = ext.BaseTypeName;
else {
XmlSchemaComplexContentRestriction rest = (XmlSchemaComplexContentRestriction)content.Content;
qname = rest.BaseTypeName;
if (qname == arrayType) {
ParseArrayType (rest, out qname);
XmlSchemaElement elem = new XmlSchemaElement ();
elem.Name = "Item";
elem.SchemaTypeName = qname;
xtw.WriteAttributeString ("arrayType", SoapEncodingNamespace, qname.Name + "[2]");
WriteContentItem (xtw, ns, elem, true);
return;
}
}
// Add base map members to this map
XmlSchemaComplexType ctype = FindComplexTyype (qname);
WriteComplexTypeAttributes (xtw, ctype);
if (ext != null) {
// Add the members of this map
WriteAttributes (xtw, ext.Attributes, ext.AnyAttribute);
if (ext.Particle != null)
WriteParticleComplexContent (xtw, ns, ext.Particle);
}
WriteComplexTypeElements (xtw, ns, ctype);
}
void ParseArrayType (XmlSchemaComplexContentRestriction rest, out XmlQualifiedName qtype)
{
XmlSchemaAttribute arrayTypeAt = FindArrayAttribute (rest.Attributes);
XmlAttribute[] uatts = arrayTypeAt.UnhandledAttributes;
if (uatts == null || uatts.Length == 0) throw new InvalidOperationException ("arrayType attribute not specified in array declaration");
XmlAttribute xat = null;
foreach (XmlAttribute at in uatts)
if (at.LocalName == "arrayType" && at.NamespaceURI == WsdlNamespace)
{ xat = at; break; }
if (xat == null)
throw new InvalidOperationException ("arrayType attribute not specified in array declaration");
string arrayType = xat.Value;
string type, ns;
int i = arrayType.LastIndexOf (":");
if (i == -1) ns = "";
else ns = arrayType.Substring (0,i);
int j = arrayType.IndexOf ("[", i+1);
if (j == -1) throw new InvalidOperationException ("Cannot parse WSDL array type: " + arrayType);
type = arrayType.Substring (i+1);
type = type.Substring (0, type.Length-2);
qtype = new XmlQualifiedName (type, ns);
}
XmlSchemaAttribute FindArrayAttribute (XmlSchemaObjectCollection atts)
{
foreach (object ob in atts)
{
XmlSchemaAttribute att = ob as XmlSchemaAttribute;
if (att != null && att.RefName == arrayTypeRefName) return att;
XmlSchemaAttributeGroupRef gref = ob as XmlSchemaAttributeGroupRef;
if (gref != null)
{
XmlSchemaAttributeGroup grp = (XmlSchemaAttributeGroup) schemas.Find (gref.RefName, typeof(XmlSchemaAttributeGroup));
att = FindArrayAttribute (grp.Attributes);
if (att != null) return att;
}
}
return null;
}
void WriteSimpleTypeSample (XmlTextWriter xtw, XmlSchemaSimpleType stype)
{
xtw.WriteString (GetLiteral (FindBuiltInType (stype)));
}
XmlSchemaParticle GetRefGroupParticle (XmlSchemaGroupRef refGroup)
{
XmlSchemaGroup grp = (XmlSchemaGroup) schemas.Find (refGroup.RefName, typeof (XmlSchemaGroup));
return grp.Particle;
}
XmlSchemaElement FindRefElement (XmlSchemaElement elem)
{
if (elem.RefName.Namespace == XmlSchema.Namespace)
{
if (anyElement != null) return anyElement;
anyElement = new XmlSchemaElement ();
anyElement.Name = "any";
anyElement.SchemaTypeName = anyType;
return anyElement;
}
return (XmlSchemaElement) schemas.Find (elem.RefName, typeof(XmlSchemaElement));
}
XmlSchemaAttribute FindRefAttribute (XmlQualifiedName refName)
{
if (refName.Namespace == XmlSchema.Namespace)
{
XmlSchemaAttribute at = new XmlSchemaAttribute ();
at.Name = refName.Name;
at.SchemaTypeName = new XmlQualifiedName ("string",XmlSchema.Namespace);
return at;
}
return (XmlSchemaAttribute) schemas.Find (refName, typeof(XmlSchemaAttribute));
}
void WriteRefTypeSample (XmlTextWriter xtw, string ns, XmlSchemaElement elem)
{
if (elem.SchemaTypeName.Namespace == XmlSchema.Namespace || schemas.Find (elem.SchemaTypeName, typeof(XmlSchemaSimpleType)) != null)
WriteElementSample (xtw, ns, elem);
else
{
xtw.WriteStartElement (elem.Name, ns);
xtw.WriteAttributeString ("href", "#id" + (queue.Count+1));
xtw.WriteEndElement ();
queue.Add (new EncodedType (ns, elem));
}
}
void WriteQueuedTypeSamples (XmlTextWriter xtw)
{
for (int n=0; n<queue.Count; n++)
{
EncodedType ec = (EncodedType) queue[n];
XmlSchemaComplexType st = FindComplexTyype (ec.Element.SchemaTypeName);
WriteComplexTypeSample (xtw, st, ec.Element.SchemaTypeName, n+1);
}
}
XmlSchemaComplexType FindComplexTyype (XmlQualifiedName qname)
{
if (qname.Name.IndexOf ("[]") != -1)
{
XmlSchemaComplexType stype = new XmlSchemaComplexType ();
stype.ContentModel = new XmlSchemaComplexContent ();
XmlSchemaComplexContentRestriction res = new XmlSchemaComplexContentRestriction ();
stype.ContentModel.Content = res;
res.BaseTypeName = arrayType;
XmlSchemaAttribute att = new XmlSchemaAttribute ();
att.RefName = arrayTypeRefName;
res.Attributes.Add (att);
XmlAttribute xat = document.CreateAttribute ("arrayType", WsdlNamespace);
xat.Value = qname.Namespace + ":" + qname.Name;
att.UnhandledAttributes = new XmlAttribute[] {xat};
return stype;
}
return (XmlSchemaComplexType) schemas.Find (qname, typeof(XmlSchemaComplexType));
}
string GetQualifiedNameString (XmlTextWriter xtw, XmlQualifiedName qname)
{
string pref = xtw.LookupPrefix (qname.Namespace);
if (pref != null) return pref + ":" + qname.Name;
xtw.WriteAttributeString ("xmlns", "q1", null, qname.Namespace);
return "q1:" + qname.Name;
}
protected virtual string GetLiteral (string s)
{
return s;
}
void GetOperationFormat (OperationBinding obin, out SoapBindingStyle style, out SoapBindingUse use)
{
style = SoapBindingStyle.Document;
use = SoapBindingUse.Literal;
SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
if (sob != null) {
style = sob.Style;
SoapBodyBinding sbb = obin.Input.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
if (sbb != null)
use = sbb.Use;
}
}
}
</script>
<head runat="server">
<%
Response.Write ("<link rel=\"alternate\" type=\"text/xml\" href=\"" + Request.FilePath + "?disco\"/>");
%>
<title><%=WebServiceName%> Web Service</title>
<style type="text/css">
BODY { font-family: Arial; margin-left: 20px; margin-top: 20px; font-size: x-small}
TABLE { font-size: x-small }
.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 }
.label { font-size: small; font-weight:bold; color:darkgray }
.paramTable { font-size: x-small }
.paramTable TR { background-color: gainsboro }
.paramFormTable { font-size: x-small; padding: 10px; background-color: gainsboro }
.paramFormTable TR { background-color: gainsboro }
.paramInput { border: solid 1px gray }
.button {border: solid 1px gray }
.smallSeparator { height:3px; overflow:hidden }
.panel { background-color:whitesmoke; border: solid 1px silver; border-top: solid 1px silver }
.codePanel { background-color: white; font-size:x-small; padding:7px; border:solid 1px silver}
.code-xml { font-size:10pt; font-family:courier }
.code-cs { font-size:10pt; font-family:courier }
.code-vb { font-size:10pt; font-family:courier }
.tabLabelOn { font-weight:bold }
.tabLabelOff {color: darkgray }
.literal-placeholder {color: darkblue; font-weight:bold}
A:link { color: black; }
A:visited { color: black; }
A:active { color: black; }
A:hover { color: blue }
</style>
<script language="javascript" type="text/javascript">
var req;
function getXML (command, url, qs) {
if (url == "" || url.substring (0, 4) != "http")
return;
var post_data = null;
req = getReq ();
req.onreadystatechange = stateChange;
if (command == "GET") {
url = url + "?" + qs;
} else {
post_data = qs;
}
req.open (command, url, true);
if (command == "POST")
req.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
req.send (post_data);
}
function stateChange () {
if (req.readyState == 4) {
var node = document.getElementById("testresult_div");
var text = "";
if (req.status == 200) {
node.innerHTML = "<div class='code-xml'>" + formatXml (req.responseText) + "</div>";
} else {
var ht = "<b style='color: red'>" + formatXml (req.status + " - " + req.statusText) + "</b>";
if (req.responseText != "")
ht = ht + "\n<div class='code-xml'>" + formatXml (req.responseText) + "</div>";
node.innerHTML = ht;
}
}
}
function formatXml (text)
{
var re = / /g;
text = text.replace (re, "&nbsp;");
re = /\t/g;
text = text.replace (re, "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
re = /\<\s*(\/?)\s*(.*?)\s*(\/?)\s*\>/g;
text = text.replace (re,"{blue:&lt;$1}{maroon:$2}{blue:$3&gt;}");
re = /{(\w*):(.*?)}/g;
text = text.replace (re,"<span style='color:$1'>$2</span>");
re = /"(.*?)"/g;
text = text.replace (re,"\"<span style='color:purple'>$1</span>\"");
re = /\r\n|\r|\n/g;
text = text.replace (re, "<br/>");
return text;
}
function getReq () {
if (window.XMLHttpRequest) {
return new XMLHttpRequest(); // Firefox, Safari, ...
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
function clearForm ()
{
document.getElementById("testFormResult").style.display="none";
}
</script>
</head>
<body>
<div class="title" style="margin-left:20px">
<span class="label">Web Service</span><br>
<%=WebServiceName%>
</div>
<!--
**********************************************************
Left panel
-->
<table border="0" width="100%" cellpadding="15px" cellspacing="15px">
<tr valign="top"><td width="150px" class="panel">
<div style="width:150px"></div>
<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 name="itemtemplate">
<span class="bindingLabel"><%#FormatBindingName(DataBinder.Eval(Container.DataItem, "Name").ToString())%></span>
<asp:repeater id="OperationsRepeater" runat=server datasource='<%# ((Binding)Container.DataItem).Operations %>'>
<itemtemplate>
<a class="method" href="<%=PageName%>?<%=GetTabContext("op",null)%>op=<%#GetOpName(Container.DataItem)%>&bnd=<%#DataBinder.Eval(Container.DataItem, "Binding.Name")%>"><%#GetOpName(Container.DataItem)%></a>
<div class="smallSeparator"></div>
</itemtemplate>
</asp:repeater>
<br>
</itemtemplate>
</asp:repeater>
</td><td class="panel">
<% if (CurrentPage == "main") {%>
<!--
**********************************************************
Web service overview
-->
<p class="label">Web Service Overview</p>
<%=WebServiceDescription%>
<br/><br/>
<% if (ProfileViolations != null && ProfileViolations.Count > 0) { %>
<p class="label">Basic Profile Conformance</p>
This web service does not conform to WS-I Basic Profile v1.1
<%
Response.Write ("<ul>");
foreach (BasicProfileViolation vio in ProfileViolations) {
Response.Write ("<li><b>" + vio.NormativeStatement + "</b>: " + vio.Details);
Response.Write ("<ul>");
foreach (string ele in vio.Elements)
Response.Write ("<li>" + ele + "</li>");
Response.Write ("</ul>");
Response.Write ("</li>");
}
Response.Write ("</ul>");
}%>
<%} if (DefaultBinding == null) {%>
This service does not contain any public web method.
<%} else if (CurrentPage == "op") {%>
<!--
**********************************************************
Operation description
-->
<span class="operationTitle"><%=CurrentOperationName%></span>
<br><br>
<% WriteTabs (); %>
<br><br><br>
<% if (CurrentTab == "main") { %>
<span class="label">Input Parameters</span>
<div class="smallSeparator"></div>
<% if (InParams.Count == 0) { %>
No input parameters<br>
<% } else { %>
<table class="paramTable" cellspacing="1" cellpadding="5">
<asp:repeater id="InputParamsRepeater" runat=server>
<itemtemplate>
<tr>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Name")%></td>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Type")%></td>
</tr>
</itemtemplate>
</asp:repeater>
</table>
<% } %>
<br>
<% if (OutParams.Count > 0) { %>
<span class="label">Output Parameters</span>
<div class="smallSeparator"></div>
<table class="paramTable" cellspacing="1" cellpadding="5">
<asp:repeater id="OutputParamsRepeater" runat=server>
<itemtemplate>
<tr>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Name")%></td>
<td width="150"><%#DataBinder.Eval(Container.DataItem, "Type")%></td>
</tr>
</itemtemplate>
</asp:repeater>
</table>
<br>
<% } %>
<span class="label">Remarks</span>
<div class="smallSeparator"></div>
<%=OperationDocumentation%>
<br><br>
<span class="label">Technical information</span>
<div class="smallSeparator"></div>
Format: <%=CurrentOperationFormat%>
<br>Supported protocols: <%=CurrentOperationProtocols%>
<% } %>
<!--
**********************************************************
Operation description - Test form
-->
<% if (CurrentTab == "test") {
if (CurrentOperationSupportsTest) {%>
Enter values for the parameters and click the 'Invoke' button to test this method:<br><br>
<form action="<%=PageName%>" method="GET">
<input type="hidden" name="page" value="<%=CurrentPage%>">
<input type="hidden" name="tab" value="<%=CurrentTab%>">
<input type="hidden" name="op" value="<%=CurrentOperationName%>">
<input type="hidden" name="bnd" value="<%=CurrentOperationBinding%>">
<input type="hidden" name="ext" value="testform">
<table class="paramFormTable" cellspacing="0" cellpadding="3">
<asp:repeater id="InputFormParamsRepeater" runat=server>
<itemtemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem, "Name")%>:&nbsp;</td>
<td width="150"><input class="paramInput" type="text" size="20" name="<%#DataBinder.Eval(Container.DataItem, "Name")%>"></td>
</tr>
</itemtemplate>
</asp:repeater>
<tr><td></td><td><input class="button" type="submit" value="Invoke">&nbsp;<input class="button" type="button" onclick="clearForm()" value="Clear"></td></tr>
</table>
</form>
<div id="testFormResult" style="display:<%= (HasFormResult?"block":"none") %>">
The web service returned the following result:<br/><br/>
<div class="codePanel" id="testresult_div">
</div>
<script language="javascript">
getXML ("<%= GetOrPost () %>", "<%= GetTestResultUrl () %>", "<%= GetQS () %>");
</script>
</div>
<% } else {%>
The test form is not available for this operation because it has parameters with a complex structure.
<% } %>
<% } %>
<!--
**********************************************************
Operation description - Message Layout
-->
<% if (CurrentTab == "msg") { %>
The following are sample SOAP requests and responses for each protocol supported by this method:
<br/><br/>
<% if (IsOperationSupported ("Soap")) { %>
<span class="label">Soap</span>
<br/><br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("Soap", true)%></div></div>
<br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("Soap", false)%></div></div>
<br/>
<% } %>
<% if (IsOperationSupported ("HttpGet")) { %>
<span class="label">HTTP Get</span>
<br/><br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpGet", true)%></div></div>
<br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpGet", false)%></div></div>
<br/>
<% } %>
<% if (IsOperationSupported ("HttpPost")) { %>
<span class="label">HTTP Post</span>
<br/><br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpPost", true)%></div></div>
<br/>
<div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpPost", false)%></div></div>
<br/>
<% } %>
<% } %>
<%} else if (CurrentPage == "proxy") {%>
<!--
**********************************************************
Client Proxy
-->
<form action="<%=PageName%>" name="langForm" method="GET">
Select the language for which you want to generate a proxy
<input type="hidden" name="page" value="<%=CurrentPage%>">&nbsp;
<SELECT name="lang" onchange="langForm.submit()">
<%=GetOptionSel("cs",CurrentLanguage)%>C#</option>
<%=GetOptionSel("vb",CurrentLanguage)%>Visual Basic</option>
</SELECT>
&nbsp;&nbsp;
</form>
<br>
<span class="label"><%=CurrentProxytName%></span>&nbsp;&nbsp;&nbsp;
<a href="<%=PageName + "?code=" + CurrentLanguage%>">Download</a>
<br><br>
<div class="codePanel">
<div class="code-<%=CurrentLanguage%>"><%=GetProxyCode ()%></div>
</div>
<%} else if (CurrentPage == "wsdl") {%>
<!--
**********************************************************
Service description
-->
<% if (descriptions.Count > 1 || schemas.Count > 1) {%>
The description of this web service is composed by several documents. Click on the document you want to see:
<ul>
<%
for (int n=0; n<descriptions.Count; n++)
Response.Write ("<li><a href='" + PageName + "?" + GetPageContext(null) + "doctype=wsdl&docind=" + n + "'>WSDL document " + descriptions[n].TargetNamespace + "</a></li>");
for (int n=0; n<schemas.Count; n++)
Response.Write ("<li><a href='" + PageName + "?" + GetPageContext(null) + "doctype=schema&docind=" + n + "'>Xml Schema " + schemas[n].TargetNamespace + "</a></li>");
%>
</ul>
<%} else {%>
<%}%>
<br>
<span class="label"><%=CurrentDocumentName%></span>&nbsp;&nbsp;&nbsp;
<a href="<%=PageName + "?" + CurrentDocType + "=" + CurrentDocInd %>">Download</a>
<br><br>
<div class="codePanel">
<div class="code-xml"><%=GenerateDocument ()%></div>
</div>
<%}%>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
<td width="20px"></td>
</tr>
</table>
</body>
</html>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="configProtectedData" type="System.Configuration.ProtectedConfigurationSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="connectionStrings" type="System.Configuration.ConnectionStringsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="mscorlib" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
<section name="runtime" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
<section name="assemblyBinding" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false" />
<section name="satelliteassemblies" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false" />
<section name="startup" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
<section name="system.data" type="System.Data.Common.DbProviderFactoriesConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="system.diagnostics" type="System.Diagnostics.SystemDiagnosticsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="system.runtime.remoting" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowLocation="false"/>
<section name="system.windows.forms" type="System.Windows.Forms.WindowsFormsSection, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="system.codedom" type="System.CodeDom.Compiler.CodeDomConfigurationHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="windows" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false" />
<section name="strongNames" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowLocation="false"/>
<sectionGroup name="system.runtime.serialization" type="System.Runtime.Serialization.Configuration.SerializationSectionGroup, System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="dataContractSerializer" type="System.Runtime.Serialization.Configuration.DataContractSerializerSection, System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</sectionGroup>
<sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="anonymousIdentification" type="System.Web.Configuration.AnonymousIdentificationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="authentication" type="System.Web.Configuration.AuthenticationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="authorization" type="System.Web.Configuration.AuthorizationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="browserCaps" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="clientTarget" type="System.Web.Configuration.ClientTargetSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="compilation" type="System.Web.Configuration.CompilationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="customErrors" type="System.Web.Configuration.CustomErrorsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="deployment" type="System.Web.Configuration.DeploymentSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineOnly" />
<section name="globalization" type="System.Web.Configuration.GlobalizationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="healthMonitoring" type="System.Web.Configuration.HealthMonitoringSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="hostingEnvironment" type="System.Web.Configuration.HostingEnvironmentSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" />
<section name="httpCookies" type="System.Web.Configuration.HttpCookiesSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="httpHandlers" type="System.Web.Configuration.HttpHandlersSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="httpModules" type="System.Web.Configuration.HttpModulesSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="httpRuntime" type="System.Web.Configuration.HttpRuntimeSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="identity" type="System.Web.Configuration.IdentitySection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="machineKey" type="System.Web.Configuration.MachineKeySection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="membership" type="System.Web.Configuration.MembershipSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="mobileControls" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="deviceFilters" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="pages" type="System.Web.Configuration.PagesSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="processModel" type="System.Web.Configuration.ProcessModelSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineOnly" allowLocation="false" />
<section name="profile" type="System.Web.Configuration.ProfileSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="roleManager" type="System.Web.Configuration.RoleManagerSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="securityPolicy" type="System.Web.Configuration.SecurityPolicySection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" />
<section name="sessionPageState" type="System.Web.Configuration.SessionPageStateSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="sessionState" type="System.Web.Configuration.SessionStateSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="siteMap" type="System.Web.Configuration.SiteMapSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="trace" type="System.Web.Configuration.TraceSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="trust" type="System.Web.Configuration.TrustSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" />
<section name="urlMappings" type="System.Web.Configuration.UrlMappingsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="webControls" type="System.Web.Configuration.WebControlsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="webParts" type="System.Web.Configuration.WebPartsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="webServices" type="System.Web.Services.Configuration.WebServicesSection, System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="xhtmlConformance" type="System.Web.Configuration.XhtmlConformanceSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<sectionGroup name="caching" type="System.Web.Configuration.SystemWebCachingSectionGroup, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="cache" type="System.Web.Configuration.CacheSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="outputCache" type="System.Web.Configuration.OutputCacheSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="outputCacheSettings" type="System.Web.Configuration.OutputCacheSettingsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
<section name="sqlCacheDependency" type="System.Web.Configuration.OutputCacheSettingsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
</sectionGroup>
<section name="monoSettings" type="System.Web.Configuration.MonoSettingsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</sectionGroup>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
</sectionGroup>
</sectionGroup>
</sectionGroup>
<sectionGroup name="system.net" type="System.Net.Configuration.NetSectionGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="authenticationModules" type="System.Net.Configuration.AuthenticationModulesSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="connectionManagement" type="System.Net.Configuration.ConnectionManagementSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="defaultProxy" type="System.Net.Configuration.DefaultProxySection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<sectionGroup name="mailSettings" type="System.Net.Configuration.MailSettingsSectionGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="smtp" type="System.Net.Configuration.SmtpSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
<section name="requestCaching" type="System.Net.Configuration.RequestCachingSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="settings" type="System.Net.Configuration.SettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="webRequestModules" type="System.Net.Configuration.WebRequestModulesSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
<section name="system.drawing" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<sectionGroup name="system.serviceModel" type="System.ServiceModel.Configuration.ServiceModelSectionGroup, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="behaviors" type="System.ServiceModel.Configuration.BehaviorsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="bindings" type="System.ServiceModel.Configuration.BindingsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="client" type="System.ServiceModel.Configuration.ClientSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="commonBehaviors" type="System.ServiceModel.Configuration.CommonBehaviorsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="diagnostics" type="System.ServiceModel.Configuration.DiagnosticSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="extensions" type="System.ServiceModel.Configuration.ExtensionsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="serviceHostingEnvironment" type="System.ServiceModel.Configuration.ServiceHostingEnvironmentSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="services" type="System.ServiceModel.Configuration.ServicesSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="standardEndpoints" type="System.ServiceModel.Configuration.StandardEndpointsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<section name="routing" type="System.ServiceModel.Routing.Configuration.RoutingSection, System.ServiceModel.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<section name="protocolMapping" type="System.ServiceModel.Configuration.ProtocolMappingSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</sectionGroup>
<sectionGroup name="system.transactions" type="System.Transactions.Configuration.TransactionsSectionGroup, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null">
<section name="defaultSettings" type="System.Transactions.Configuration.DefaultSettingsSection, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"/>
<section name="machineSettings" type="System.Transactions.Configuration.MachineSettingsSection, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" allowDefinition="MachineOnly" allowExeDefinition="MachineOnly"/>
</sectionGroup>
<section name="system.webServer" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="uri" type="System.Configuration.UriSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<sectionGroup name="system.runtime.caching" type="System.Runtime.Caching.Configuration.CachingSectionGroup, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="memoryCache" type="System.Runtime.Caching.Configuration.MemoryCacheSection, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
</sectionGroup>
</configSections>
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
<add name="LocalSqliteServer" connectionString="Data Source=|DataDirectory|/aspnetdb.sqlite;version=3" providerName="Mono.Data.Sqlite"/>
</connectionStrings>
<configProtectedData defaultProvider="RsaProtectedConfigurationProvider">
<providers>
<add name="RsaProtectedConfigurationProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
description="" keyContainerName="MonoFrameworkConfigurationKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
<add name="DataProtectionConfigurationProvider" type="System.Configuration.DpapiProtectedConfigurationProvider, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
description="" useMachineProtection="true" keyEntropy="" />
</providers>
</configProtectedData>
<system.net>
<authenticationModules>
<add type="System.Net.BasicClient, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.Net.DigestClient, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.Net.NtlmClient, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</authenticationModules>
<webRequestModules>
<add prefix="http" type="System.Net.HttpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add prefix="https" type="System.Net.HttpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add prefix="file" type="System.Net.FileWebRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add prefix="ftp" type="System.Net.FtpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</webRequestModules>
<settings>
<ipv6 enabled="true"/>
</settings>
</system.net>
<system.runtime.remoting>
<application>
<channels>
<channel ref="http client" displayName="http client (delay loaded)" delayLoadAsClientChannel="true" />
<channel ref="tcp client" displayName="tcp client (delay loaded)" delayLoadAsClientChannel="true" />
<channel ref="ipc client" displayName="ipc client (delay loaded)" delayLoadAsClientChannel="true" />
</channels>
</application>
<channels>
<channel id="http" type="System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="http client" type="System.Runtime.Remoting.Channels.Http.HttpClientChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="http server" type="System.Runtime.Remoting.Channels.Http.HttpServerChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="tcp" type="System.Runtime.Remoting.Channels.Tcp.TcpChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="tcp client" type="System.Runtime.Remoting.Channels.Tcp.TcpClientChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="tcp server" type="System.Runtime.Remoting.Channels.Tcp.TcpServerChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="ipc" type="System.Runtime.Remoting.Channels.Ipc.IpcChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="ipc client" type="System.Runtime.Remoting.Channels.Ipc.IpcClientChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<channel id="ipc server" type="System.Runtime.Remoting.Channels.Ipc.IpcServerChannel, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</channels>
<channelSinkProviders>
<clientProviders>
<formatter id="soap" type="System.Runtime.Remoting.Channels.SoapClientFormatterSinkProvider, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<formatter id="binary" type="System.Runtime.Remoting.Channels.BinaryClientFormatterSinkProvider, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</clientProviders>
<serverProviders>
<formatter id="soap" type="System.Runtime.Remoting.Channels.SoapServerFormatterSinkProvider, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<formatter id="binary" type="System.Runtime.Remoting.Channels.BinaryServerFormatterSinkProvider, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<provider id="wsdl" type="System.Runtime.Remoting.MetadataServices.SdlChannelSinkProvider, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</serverProviders>
</channelSinkProviders>
</system.runtime.remoting>
<appSettings>
<!--<add key="yourkey" value="your value" /> -->
<!--<remove key="a key defined higher in the hierarchy" /> -->
<!--<clear/> Removes all defined settings -->
</appSettings>
<system.diagnostics>
<trace autoflush="false" indentsize="4" />
</system.diagnostics>
<system.drawing>
</system.drawing>
<system.data>
<DbProviderFactories>
<add name="Mono Sqlite Data Provider" invariant="Mono.Data.SqliteClient"
description="Mono Framework Data Provider for SQLite (old version)"
type="Mono.Data.SqliteClient.SqliteFactory, Mono.Data.SqliteClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"/>
<add name="Mono Sqlite Provider" invariant="Mono.Data.Sqlite"
description="Mono Framework Data Provider for SQLite (new version)"
type="Mono.Data.Sqlite.SqliteFactory, Mono.Data.Sqlite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"/>
<add name="Odbc Data Provider" invariant="System.Data.Odbc"
description=".Net Framework Data Provider for Odbc"
type="System.Data.Odbc.OdbcFactory, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OleDb Data Provider" invariant="System.Data.OleDb"
description=".Net Framework Data Provider for OleDb"
type="System.Data.OleDb.OleDbFactory, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OracleClient Data Provider" invariant="System.Data.OracleClient"
description=".Net Framework Data Provider for Oracle"
type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient"
description=".Net Framework Data Provider for SqlServer"
type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="Sybase Data Provider" invariant="Mono.Data.SybaseClient"
description=".Net Framework Data Provider for Sybase"
type="Mono.Data.SybaseClient.SybaseClientFactory, Mono.Data.SybaseClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"/>
</DbProviderFactories>
</system.data>
<mscorlib>
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass monoMD2="Mono.Security.Cryptography.MD2Managed, Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
<cryptoClass monoMD4="Mono.Security.Cryptography.MD4Managed, Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
</cryptoClasses>
<nameEntry name="MD2" class="monoMD2" />
<nameEntry name="MD4" class="monoMD4" />
</cryptoNameMapping>
<oidMap>
<oidEntry OID="1.2.840.113549.2.2" name="MD2" />
<oidEntry OID="1.2.840.113549.2.2" name="Mono.Security.Cryptography.MD2Managed" />
<oidEntry OID="1.2.840.113549.2.4" name="MD4" />
<oidEntry OID="1.2.840.113549.2.4" name="Mono.Security.Cryptography.MD4Managed" />
</oidMap>
</cryptographySettings>
</mscorlib>
<strongNames>
<pubTokenMapping>
<!-- ECMA key -->
<map Token="b77a5c561934e089" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- Microsoft (final) key -->
<map Token="b03f5f7f11d50a3a" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- Microsoft (Web Service Enhancement) key -->
<map Token="31bf3856ad364e35" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- IBM (DB2 Data Provider) key -->
<map Token="7c307b91aa13d208" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- Silverlight 2.0 key -->
<map Token="7cec85d7bea7798e" PublicKey="002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df" />
<!-- XNA Framework key -->
<map Token="6d5c3888ef60e27d" PublicKey="0024000004800000940000000602000000240000525341310004000001000100f9a2641bac9847900d92a33d652ccc4e8b529360f908e7af53e57008b2a9a1938c32a160d47f795a23590557608d2c8d0c0e8846a052d070f9298281b8185343dbe5b479bd52de256f73c2a943e1a8a42065b5c918622dc14b1c0151dbd94d9a4543e7cd03e536b1b1d2d6d99af535d227ab9bdac76af9312a21d457bdf817e6" />
</pubTokenMapping>
</strongNames>
<system.web>
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpSoap12"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
<conformanceWarnings>
<add name="BasicProfile1_1"/>
</conformanceWarnings>
<wsdlHelpGenerator href="DefaultWsdlHelpGenerator.aspx" />
</webServices>
<membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
<!-- <add name="AspNetSqlMembershipProvider" type="Mainsoft.Web.Security.GenericMembershipProvider, Mainsoft.Web.Security" applicationName="/" connectionStringName="LocalSqlServer" /> -->
</providers>
</membership>
<roleManager>
<providers>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="LocalSqlServer" />
<!-- <add name="AspNetSqlRoleProvider" type="Mainsoft.Web.Security.GenericRoleProvider, Mainsoft.Web.Security" applicationName="/" connectionStringName="LocalSqlServer" /> -->
</providers>
</roleManager>
<profile>
<providers>
<add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</profile>
</system.web>
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="enableWebScript" type="System.ServiceModel.Configuration.WebScriptEnablingElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="webHttp" type="System.ServiceModel.Configuration.WebHttpElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</behaviorExtensions>
<bindingElementExtensions>
<add name="webMessageEncoding" type="System.ServiceModel.Configuration.WebMessageEncodingElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingElementExtensions>
<bindingExtensions>
<add name="webHttpBinding" type="System.ServiceModel.Configuration.WebHttpBindingCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingExtensions>
<endpointExtensions>
<add name="dynamicEndpoint" type="System.ServiceModel.Discovery.Configuration.DynamicEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="discoveryEndpoint" type="System.ServiceModel.Discovery.Configuration.DiscoveryEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="udpDiscoveryEndpoint" type="System.ServiceModel.Discovery.Configuration.UdpDiscoveryEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="announcementEndpoint" type="System.ServiceModel.Discovery.Configuration.AnnouncementEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="udpAnnouncementEndpoint" type="System.ServiceModel.Discovery.Configuration.UdpAnnouncementEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="webHttpEndpoint" type="System.ServiceModel.Configuration.WebHttpEndpointCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="webScriptEndpoint" type="System.ServiceModel.Configuration.WebScriptEndpointCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</endpointExtensions>
</extensions>
</system.serviceModel>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<settingsMap>
<map sectionType="System.Web.Configuration.MembershipSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mapperType="Mono.Web.Util.MembershipSectionMapper, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
platform="Unix">
<!-- The 'what' tag specifies which region of the section to modify. The 'value' attribute value is mapper-specific and is not defined here. It can be
any expression understood by the mapper to designate the section region to modify.
-->
<what value="providers">
<!-- 'what' can contain any number of occurrences of any three elements:
replace - replace the designated region
add - add a new entry to the region
clear - clear the region
remove - remove the designatedregion
The attributes to any of the above are freeform and are not processed by the mapper manager. They are stored verbatim for the
mapper to peruse.
-->
<replace name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqliteMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqliteServer" />
</what>
</map>
<map sectionType="System.Web.Configuration.RoleManagerSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mapperType="Mono.Web.Util.RoleManagerSectionMapper, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
platform="Unix">
<!-- The 'what' tag specifies which region of the section to modify. The 'value' attribute value is mapper-specific and is not defined here. It can be
any expression understood by the mapper to designate the section region to modify.
-->
<what value="providers">
<!-- 'what' can contain any number of occurrences of any three elements:
replace - replace the designated region
add - add a new entry to the region
clear - clear the region
remove - remove the designatedregion
The attributes to any of the above are freeform and are not processed by the mapper manager. They are stored verbatim for the
mapper to peruse.
-->
<replace name="AspNetSqlRoleProvider"
type="System.Web.Security.SqliteRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqliteServer" />
</what>
</map>
</settingsMap>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v4.0"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v4.0"/>
<providerOption name="OptionInfer" value="true"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
<system.web>
<monoSettings>
<compilersCompatibility>
<compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/nowarn:0169"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</compilersCompatibility>
</monoSettings>
<authorization>
<allow users="*" />
</authorization>
<httpHandlers>
<add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True" />
<add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
<add verb="*" path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False" />
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
<add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />
<add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" />
<add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" />
<add path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False" />
<add path="*.rem" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False" />
<add path="*.soap" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False" />
<add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.master" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.skin" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.browser" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.sitemap" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.dll.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
<add path="*.exe.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
<add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.csproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.vb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.vbproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.webinfo" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.licx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.resx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.resources" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.mdb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.vjsproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.java" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.jsl" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ldb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ad" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.dd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ldd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.sd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.adprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.lddprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.exclude" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.refresh" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<!--
<add path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
-->
<add verb="*" path="*.svc" type="System.ServiceModel.Channels.SvcHttpHandlerFactory, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add path="*.rules" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
<!--
<add path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
<add path="*.xamlx" verb="*" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
-->
<add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True" />
<add path="*" verb="*" type="System.Web.HttpMethodNotAllowedHandler" validate="True" />
</httpHandlers>
<httpModules>
<add name="OutputCache" type="System.Web.Caching.OutputCacheModule" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" />
<!--
<add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" />
-->
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<!--
<add name="PassportAuthentication" type="System.Web.Security.PassportAuthenticationModule" />
-->
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
<!--
<add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" />
-->
<add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" />
<add name="Profile" type="System.Web.Profile.ProfileModule" />
<!--
<add name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule, System.Web.Mobile, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
-->
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
<add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
<authentication mode="Forms">
<forms name=".MONOAUTH" loginUrl="login.aspx" protection="All" timeout="30" path="/">
<credentials passwordFormat="Clear">
<!--<user name="gonzalo" password="gonz"/>-->
</credentials>
</forms>
</authentication>
<machineKey validationKey="AutoGenerate" decryptionKey="AutoGenerate" validation="SHA1" />
<globalization requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding="utf-8"/>
<!--
culture="en-US"
uiculture="en-US" />
-->
<sessionState mode="InProc" />
<pages>
<namespaces>
<add namespace="System" />
<add namespace="System.Collections" />
<add namespace="System.Collections.Specialized" />
<add namespace="System.Configuration" />
<add namespace="System.Text" />
<add namespace="System.Text.RegularExpressions" />
<add namespace="System.Web" />
<add namespace="System.Web.Caching" />
<add namespace="System.Web.SessionState" />
<add namespace="System.Web.Security" />
<add namespace="System.Web.Profile" />
<add namespace="System.Web.UI" />
<add namespace="System.Web.UI.WebControls" />
<!-- <add namespace="System.Web.UI.WebControls.WebParts" /> -->
<add namespace="System.Web.UI.HtmlControls" />
</namespaces>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls.WebParts" assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls.Expressions" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.DynamicData" assembly="System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</controls>
</pages>
<webControls clientScriptsLocation="/web_scripts" />
<compilation debug="false" defaultLanguage="c#" explicit="true" strict="false" >
<assemblies>
<!-- <add assembly="mscorlib" /> -->
<add assembly="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<!-- <add assembly="System.Web.Mobile, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> -->
<add assembly="System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<!-- <add assembly="System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<!-- <add assembly="System.ServiceModel.Channels, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<add assembly="System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<!-- <add assembly="System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<!-- <add assembly="System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<!-- <add assembly="System.WorkflowServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<!-- <add assembly="System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> -->
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<!-- <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> -->
<!-- <add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> -->
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<!-- <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> -->
<add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="*" /> <!-- Add assemblies in bin directory -->
</assemblies>
<expressionBuilders>
<add expressionPrefix="Resources"
type="System.Web.Compilation.ResourceExpressionBuilder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add expressionPrefix="ConnectionStrings"
type="System.Web.Compilation.ConnectionStringsExpressionBuilder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add expressionPrefix="AppSettings"
type="System.Web.Compilation.AppSettingsExpressionBuilder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add expressionPrefix="RouteUrl" type="System.Web.Compilation.RouteUrlExpressionBuilder"/>
<!--
<add expressionPrefix="RouteValue" type="System.Web.Compilation.RouteValueExpressionBuilder"/>
-->
</expressionBuilders>
<buildProviders>
<add extension=".aspx" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".ascx" type="System.Web.Compilation.UserControlBuildProvider" />
<add extension=".master" type="System.Web.Compilation.MasterPageBuildProvider" />
<add extension=".asmx" type="System.Web.Compilation.WebServiceBuildProvider" />
<add extension=".ashx" type="System.Web.Compilation.WebHandlerBuildProvider" />
<add extension=".soap" type="System.Web.Compilation.WebServiceBuildProvider" />
<add extension=".resx" type="System.Web.Compilation.ResXBuildProvider" />
<add extension=".resources" type="System.Web.Compilation.ResourcesBuildProvider" />
<add extension=".wsdl" type="System.Web.Compilation.WsdlBuildProvider" />
<add extension=".xsd" type="System.Web.Compilation.XsdBuildProvider" />
<add extension=".js" type="System.Web.Compilation.ForceCopyBuildProvider" />
<add extension=".lic" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<add extension=".licx" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<add extension=".exclude" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<add extension=".refresh" type="System.Web.Compilation.IgnoreFileBuildProvider" />
<!--
<add extension=".edmx" type="System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider" />
<add extension=".xoml" type="System.ServiceModel.Activation.WorkflowServiceBuildProvider, System.WorkflowServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add extension=".svc" type="System.ServiceModel.Activation.ServiceBuildProvider, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add extension=".xamlx" type="System.Xaml.Hosting.XamlBuildProvider, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
-->
</buildProviders>
</compilation>
<httpRuntime executionTimeout="110"
maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="5000" />
<clientTarget>
<add alias="ie5" userAgent="Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)" />
<add alias="ie4" userAgent="Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 4.0)" />
<add alias="uplevel" userAgent="Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 4.0)" />
<add alias="downlevel" userAgent="Unknown" />
</clientTarget>
<siteMap>
<providers>
<add name="AspNetXmlSiteMapProvider"
description="Default site map provider that reads in .sitemap xml files."
type="System.Web.XmlSiteMapProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
siteMapFile="Web.sitemap" />
</providers>
</siteMap>
</system.web>
</configuration>
This source diff could not be displayed because it is too large. You can view the blob instead.
<configuration>
<dllmap dll="i:cygwin1.dll" target="libc.dylib" os="!windows" />
<dllmap dll="libc" target="libc.dylib" os="!windows"/>
<dllmap dll="intl" target="libintl.dylib" os="!windows"/>
<dllmap dll="intl" name="bind_textdomain_codeset" target="libc.dylib" os="solaris"/>
<dllmap dll="libintl" name="bind_textdomain_codeset" target="libc.dylib" os="solaris"/>
<dllmap dll="libintl" target="libintl.dylib" os="!windows"/>
<dllmap dll="i:libxslt.dll" target="libxslt.dylib" os="!windows"/>
<dllmap dll="i:odbc32.dll" target="libodbc.dylib" os="!windows"/>
<dllmap dll="i:odbc32.dll" target="libiodbc.dylib" os="osx"/>
<dllmap dll="oci" target="libclntsh.dylib" os="!windows"/>
<dllmap dll="db2cli" target="libdb2_36.dylib" os="!windows"/>
<dllmap dll="MonoPosixHelper" target="libMonoPosixHelper.dylib" os="!windows" />
<dllmap dll="libmono-btls-shared" target="libmono-btls-shared.dylib" os="!windows" />
<dllmap dll="i:msvcrt" target="libc.dylib" os="!windows"/>
<dllmap dll="i:msvcrt.dll" target="libc.dylib" os="!windows"/>
<dllmap dll="sqlite" target="libsqlite.0.dylib" os="!windows"/>
<dllmap dll="sqlite3" target="libsqlite3.0.dylib" os="!windows"/>
<dllmap dll="libX11" target="libX11.dylib" os="!windows" />
<dllmap dll="libgdk-x11-2.0" target="libgdk-x11-2.0.dylib" os="!windows"/>
<dllmap dll="libgdk_pixbuf-2.0" target="libgdk_pixbuf-2.0.so.0" os="!windows"/>
<dllmap dll="libgtk-x11-2.0" target="libgtk-x11-2.0.dylib" os="!windows"/>
<dllmap dll="libglib-2.0" target="libglib-2.0.so.0" os="!windows"/>
<dllmap dll="libgobject-2.0" target="libgobject-2.0.so.0" os="!windows"/>
<dllmap dll="libgnomeui-2" target="libgnomeui-2.so.0" os="!windows"/>
<dllmap dll="librsvg-2" target="librsvg-2.so.2" os="!windows"/>
<dllmap dll="libXinerama" target="libXinerama.so.1" os="!windows" />
<dllmap dll="libasound" target="libasound.so.2" os="!windows" />
<dllmap dll="libcairo-2.dll" target="libcairo.so.2" os="!windows"/>
<dllmap dll="libcairo-2.dll" target="libcairo.2.dylib" os="osx"/>
<dllmap dll="libcups" target="libcups.so.2" os="!windows"/>
<dllmap dll="libcups" target="libcups.dylib" os="osx"/>
<dllmap dll="i:kernel32.dll">
<dllentry dll="__Internal" name="CopyMemory" target="mono_win32_compat_CopyMemory"/>
<dllentry dll="__Internal" name="FillMemory" target="mono_win32_compat_FillMemory"/>
<dllentry dll="__Internal" name="MoveMemory" target="mono_win32_compat_MoveMemory"/>
<dllentry dll="__Internal" name="ZeroMemory" target="mono_win32_compat_ZeroMemory"/>
</dllmap>
<dllmap dll="gdiplus" target="/Users/builduser/build/output/Unity-Technologies/mono/external/buildscripts/add_to_build_results/monodistribution/lib/libgdiplus.dylib" os="!windows"/>
<dllmap dll="gdiplus.dll" target="/Users/builduser/build/output/Unity-Technologies/mono/external/buildscripts/add_to_build_results/monodistribution/lib/libgdiplus.dylib" os="!windows"/>
<dllmap dll="gdi32" target="/Users/builduser/build/output/Unity-Technologies/mono/external/buildscripts/add_to_build_results/monodistribution/lib/libgdiplus.dylib" os="!windows"/>
<dllmap dll="gdi32.dll" target="/Users/builduser/build/output/Unity-Technologies/mono/external/buildscripts/add_to_build_results/monodistribution/lib/libgdiplus.dylib" os="!windows"/>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<mconfig>
<configuration>
<handlers>
<handler section="feature"
type="Mono.MonoConfig.FeatureNodeHandler, mconfig, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null"
storageType="System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[Mono.MonoConfig.FeatureNode, mconfig, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<handler section="configBlock"
type="Mono.MonoConfig.ConfigBlockNodeHandler, mconfig, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null"
storageType="System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[Mono.MonoConfig.ConfigBlockBlock, mconfig, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<handler section="default"
type="Mono.MonoConfig.DefaultNodeHandler, mconfig, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null"
storageType="System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[Mono.MonoConfig.DefaultNode, mconfig, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<handler section="defaultConfigFile"
type="Mono.MonoConfig.DefaultConfigFileNodeHandler, mconfig, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null"
storageType="System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[Mono.MonoConfig.DefaultConfigFile, mconfig, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</handlers>
</configuration>
<feature name="AJAX" target="web">
<description><![CDATA[
Adds entries to your Web.config file which are required by any .NET 3.5 AJAX.NET application.
]]></description>
<blocks>
<block name="AJAX config sections"/>
<block name="AJAX controls registration"/>
<block name="AJAX compilation"/>
<block name="AJAX HTTP handlers"/>
<block name="AJAX HTTP modules"/>
<block name="AJAX CodeDOM 3.5 settings"/>
<block name="AJAX runtime settings"/>
<block name="AJAX system.webServer"/>
<block name="" />
</blocks>
</feature>
<feature name="AJAX1" target="web">
<description><![CDATA[
Adds entries to your Web.config file which are required by any AJAX.NET 1.0 application.
]]></description>
<blocks>
<block name="AJAX1 config sections"/>
<block name="AJAX1 controls registration"/>
<block name="AJAX1 compilation"/>
<block name="AJAX1 HTTP handlers"/>
<block name="AJAX1 HTTP modules"/>
<block name="AJAX1 system.web.extensions"/>
<block name="AJAX1 system.webServer"/>
<block name="" />
</blocks>
</feature>
<feature name="DynamicData" target="web">
<description><![CDATA[
Adds entries to your Web.config file which are required by any ASP.NET DynamicData application.
]]></description>
<blocks>
<block name="AJAX config sections"/>
<block name="AJAX controls registration"/>
<block name="AJAX compilation"/>
<block name="AJAX HTTP handlers"/>
<block name="AJAX HTTP modules"/>
<block name="AJAX system.web.extensions"/>
<block name="AJAX system.webServer"/>
<block name="DynamicData controls registration" />
<block name="DynamicData compilation" />
<block name="DynamicData HTTP modules" />
</blocks>
</feature>
<feature name="SettingsMapProtection" target="web">
<description><![CDATA[
Adds an entry to your config file which will prevent download of the 'settings.map' file. The
file is used by the settings mapping manager to modify configuration settings depending on the operating
system under which your application runs. Add this feature only if you have your own custom 'settings.map'
file in the top-level directory of your ASP.NET application.
]]></description>
<blocks>
<block name="SettingsMap Handler"/>
</blocks>
</feature>
<!-- configuration blocks required by the features -->
<configBlock name="SettingsMap Handler">
<requires>
<section name="configuration">
<section name="system.web">
<section name="httpHandlers" defaultBlockName="system.web.httpHandlers"/>
</section>
</section>
</requires>
<contents>
<![CDATA[
<add verb="*" path="settings.map" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
]]>
</contents>
</configBlock>
<!-- AJAX.NET 3.5 start -->
<configBlock name="AJAX config sections">
<requires>
<section name="configuration">
<section name="configSections" attachPoint="true"/>
</section>
</requires>
<contents>
<![CDATA[
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
</sectionGroup>
</sectionGroup>
</sectionGroup>
]]>
</contents>
</configBlock>
<configBlock name="AJAX controls registration">
<requires>
<section name="configuration">
<section name="system.web">
<section name="pages" defaultBlockName="system.web.pages">
<section name="controls" defaultBlockName="system.web.pages.controls"/>
</section>
</section>
</section>
</requires>
<contents>
<![CDATA[
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
]]>
</contents>
</configBlock>
<configBlock name="AJAX compilation">
<requires>
<section name="configuration">
<section name="system.web">
<section name="compilation" defaultBlockName="system.web.compilation">
<section name="assemblies" defaultBlockName="system.web.compilation.assemblies"/>
</section>
</section>
</section>
</requires>
<contents>
<![CDATA[
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
]]>
</contents>
</configBlock>
<configBlock name="AJAX HTTP handlers">
<requires>
<section name="configuration">
<section name="system.web">
<section name="httpHandlers" defaultBlockName="system.web.httpHandlers"/>
</section>
</section>
</requires>
<contents>
<![CDATA[
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
]]>
</contents>
</configBlock>
<configBlock name="AJAX HTTP modules">
<requires>
<section name="configuration">
<section name="system.web">
<section name="httpModules" defaultBlockName="system.web.httpModules"/>
</section>
</section>
</requires>
<contents>
<![CDATA[
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
]]>
</contents>
</configBlock>
<configBlock name="AJAX CodeDOM 3.5 settings">
<requires>
<section name="configuration">
<section name="system.codedom">
<section name="compilers" defaultBlockName="system.codedom.compilers"/>
</section>
</section>
</requires>
<contents>
<![CDATA[
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4"
type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="OptionInfer" value="true"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
]]>
</contents>
</configBlock>
<configBlock name="AJAX runtime settings">
<requires>
<section name="configuration">
<section name="runtime"/>
</section>
</requires>
<contents>
<![CDATA[
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
]]>
</contents>
</configBlock>
<configBlock name="AJAX system.webServer">
<requires>
<section name="configuration">
<section name="system.webServer"/>
</section>
</requires>
<contents>
<![CDATA[
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<remove name="ScriptModule" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated"/>
<remove name="ScriptHandlerFactory" />
<remove name="ScriptHandlerFactoryAppServices" />
<remove name="ScriptResource" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>
]]>
</contents>
</configBlock>
<!-- AJAX.NET 3.5 end -->
<!-- AJAX.NET 1.0 start -->
<configBlock name="AJAX1 config sections">
<requires>
<section name="configuration">
<section name="configSections" attachPoint="true"/>
</section>
</requires>
<contents>
<![CDATA[
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere" />
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
</sectionGroup>
</sectionGroup>
</sectionGroup>
]]>
</contents>
</configBlock>
<configBlock name="AJAX1 controls registration">
<requires>
<section name="configuration">
<section name="system.web">
<section name="pages" defaultBlockName="system.web.pages">
<section name="controls" defaultBlockName="system.web.pages.controls"/>
</section>
</section>
</section>
</requires>
<contents>
<![CDATA[
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
]]>
</contents>
</configBlock>
<configBlock name="AJAX1 compilation">
<requires>
<section name="configuration">
<section name="system.web">
<section name="compilation" defaultBlockName="system.web.compilation">
<section name="assemblies" defaultBlockName="system.web.compilation.assemblies"/>
</section>
</section>
</section>
</requires>
<contents>
<![CDATA[
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
]]>
</contents>
</configBlock>
<configBlock name="AJAX1 HTTP handlers">
<requires>
<section name="configuration">
<section name="system.web">
<section name="httpHandlers" defaultBlockName="system.web.httpHandlers"/>
</section>
</section>
</requires>
<contents>
<![CDATA[
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
]]>
</contents>
</configBlock>
<configBlock name="AJAX1 HTTP modules">
<requires>
<section name="configuration">
<section name="system.web">
<section name="httpModules" defaultBlockName="system.web.httpModules"/>
</section>
</section>
</requires>
<contents>
<![CDATA[
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
]]>
</contents>
</configBlock>
<configBlock name="AJAX1 system.web.extensions">
<requires>
<section name="configuration">
<section name="system.web.extensions"/>
</section>
</requires>
<contents>
<![CDATA[
<scripting>
<webServices>
<!-- Uncomment this line to customize maxJsonLength and add a custom converter -->
<!--
<jsonSerialization maxJsonLength="500">
<converters>
<add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/>
</converters>
</jsonSerialization>
-->
<!-- Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate. -->
<!--
<authenticationService enabled="true" requireSSL = "true|false"/>
-->
<!-- Uncomment these lines to enable the profile service. To allow profile properties to be retrieved
and modified in ASP.NET AJAX applications, you need to add each property name to the readAccessProperties and
writeAccessProperties attributes. -->
<!--
<profileService enabled="true"
readAccessProperties="propertyname1,propertyname2"
writeAccessProperties="propertyname1,propertyname2" />
-->
</webServices>
<!--
<scriptResourceHandler enableCompression="true" enableCaching="true" />
-->
</scripting>
]]>
</contents>
</configBlock>
<configBlock name="AJAX1 system.webServer">
<requires>
<section name="configuration">
<section name="system.webServer"/>
</section>
</requires>
<contents>
<![CDATA[
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
]]>
</contents>
</configBlock>
<!-- AJAX.NET 1.0 end -->
<configBlock name="DynamicData controls registration">
<requires>
<section name="configuration">
<section name="system.web">
<section name="pages" defaultBlockName="system.web.pages">
<section name="controls" defaultBlockName="system.web.pages.controls"/>
</section>
</section>
</section>
</requires>
<contents>
<![CDATA[
<add tagPrefix="asp" namespace="System.Web.DynamicData" assembly="System.Web.DynamicData, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
]]>
</contents>
</configBlock>
<configBlock name="DynamicData compilation">
<requires>
<section name="configuration">
<section name="system.web">
<section name="compilation" defaultBlockName="system.web.compilation">
<section name="assemblies" defaultBlockName="system.web.compilation.assemblies"/>
</section>
</section>
</section>
</requires>
<contents>
<![CDATA[
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.ComponentModel.DataAnnotations, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.Web.DynamicData, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
]]>
</contents>
</configBlock>
<configBlock name="DynamicData HTTP modules">
<requires>
<section name="configuration">
<section name="system.web">
<section name="httpModules" defaultBlockName="system.web.httpModules"/>
</section>
</section>
</requires>
<contents>
<![CDATA[
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
]]>
</contents>
</configBlock>
<!-- default contents for missing sections -->
<default section="configuration" target="any">
<![CDATA[
<configuration>
</configuration>
]]>
</default>
<default section="configSections" target="any">
<![CDATA[
<configSections>
</configSections>
]]>
</default>
<default section="system.web" target="web">
<![CDATA[
<system.web>
</system.web>
]]>
</default>
<default section="system.web.pages" target="web">
<![CDATA[
<pages>
</pages>
]]>
</default>
<default section="system.web.pages.controls" target="web">
<![CDATA[
<controls>
</controls>
]]>
</default>
<default section="system.web.compilation" target="web">
<![CDATA[
<compilation debug="true">
</compilation>
]]>
</default>
<default section="system.web.compilation.assemblies" target="web">
<![CDATA[
<assemblies>
</assemblies>
]]>
</default>
<default section="system.web.httpHandlers" target="web">
<![CDATA[
<httpHandlers>
</httpHandlers>
]]>
</default>
<default section="system.web.httpModules" target="web">
<![CDATA[
<httpModules>
</httpModules>
]]>
</default>
<default section="system.web.extensions" target="web">
<![CDATA[
<system.web.extensions>
</system.web.extensions>
]]>
</default>
<default section="system.webServer" target="web">
<![CDATA[
<system.webServer>
</system.webServer>
]]>
</default>
<default section="system.web.customErrors" target="web">
<![CDATA[
<customErrors mode="RemoteOnly"/>
]]>
</default>
<default section="system.codedom" target="any">
<![CDATA[
<system.codedom>
</system.codedom>
]]>
</default>
<default section="system.codedom.compilers" target="any">
<![CDATA[
<compilers>
</compilers>
]]>
</default>
<default section="runtime" target="any">
<![CDATA[
<runtime>
</runtime>
]]>
</default>
<!-- default config file definitions -->
<defaultConfigFile name="web.config" fileName="Web.config" target="web">
<section name="configuration">
<section name="system.web">
<section name="compilation" defaultBlockName="system.web.compilation"/>
<section name="customErrors" defaultBlockName="system.web.customErrors"/>
</section>
</section>
</defaultConfigFile>
</mconfig>
player-connection-mode=Listen
player-connection-guid=1431471753
player-connection-debug=0
player-connection-ip=192.168.1.69
gfx-enable-native-gfx-jobs=
wait-for-native-debugger=0
scripting-runtime-version=latest
vr-enabled=1
vr-device-list=None,cardboard
hdr-display-enabled=0
android-force-sdcard-permission=1
androidStartInFullscreen=1
androidRenderOutsideSafeArea=1
buildDate=637219304147729659
package com.biganto.visual.roompark.player
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.content.Intent
......@@ -148,7 +149,9 @@ class BigantoPlayerActivity : Activity(), UnityResponseListener {
finish()
}
@SuppressLint("SourceLockedOrientationActivity")
override fun onDestroy() {
this.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT
quitPlayer()
super.onDestroy()
}
......@@ -211,6 +214,8 @@ class BigantoPlayerActivity : Activity(), UnityResponseListener {
}
// Pause Unity
override fun onPause() {
super.onPause()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment