Rudewind
asked on
Asmx Web Service with Soap 1.2
I'm creating an asmx web service for a solution about receiving online invoices. Invoice sender (client) wants me to make my service as soap 1.2.
My default web service's binding is like below:
As you see, it says basic profile v1.1 ... But when I checked basic profile v1.1, I just sow only supports soap 1.1 , I need 1.2 and I have to use wsi profile. There is wsi profile 2.0 version at their web site ( http://ws-i.org/Profiles/BasicProfile-2.0-2010-11-09.html ) but I don't know how to use it in c# asmx web service. Can you help? (Full code below.)
My default web service's binding is like below:
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
As you see, it says basic profile v1.1 ... But when I checked basic profile v1.1, I just sow only supports soap 1.1 , I need 1.2 and I have to use wsi profile. There is wsi profile 2.0 version at their web site ( http://ws-i.org/Profiles/BasicProfile-2.0-2010-11-09.html ) but I don't know how to use it in c# asmx web service. Can you help? (Full code below.)
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Text;
using System.Web;
using System.Web.Configuration;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
using EFaturaMaker.EFaturaService;
namespace PostboxWS
{
/// <summary>
/// Summary description for Postbox
/// </summary>
[WebService(Namespace = "http://gib.gov.tr/vedop3/eFatura")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class Postbox : System.Web.Services.WebService
{
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.Web.Services.WebServiceBindingAttribute(Name = "EFaturaSoapBinding", Namespace = "http://gib.gov.tr/vedop3/eFatura")]
public interface IEFaturaSoapBinding
{
/// <remarks/>
[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("getApplicationResponse", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("getAppRespResponse", Namespace = "http://gib.gov.tr/vedop3/eFatura")]
getAppRespResponseType getApplicationResponse([System.Xml.Serialization.XmlElementAttribute(Namespace = "http://gib.gov.tr/vedop3/eFatura")] getAppRespRequestType getAppRespRequest);
/// <remarks/>
[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("sendDocument", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("documentResponse", Namespace = "http://gib.gov.tr/vedop3/eFatura")]
documentReturnType sendDocument([System.Xml.Serialization.XmlElementAttribute(Namespace = "http://gib.gov.tr/vedop3/eFatura")] documentType documentRequest);
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://gib.gov.tr/vedop3/eFatura")]
public partial class getAppRespRequestType
{
private string instanceIdentifierField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string instanceIdentifier
{
get
{
return this.instanceIdentifierField;
}
set
{
this.instanceIdentifierField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://gib.gov.tr/vedop3/eFatura")]
public partial class documentReturnType
{
private string msgField;
private string hashField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string msg
{
get
{
return this.msgField;
}
set
{
this.msgField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string hash
{
get
{
return this.hashField;
}
set
{
this.hashField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.w3.org/2005/05/xmlmime")]
public partial class base64Binary
{
private string contentTypeField;
private byte[] valueField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string contentType
{
get
{
return this.contentTypeField;
}
set
{
this.contentTypeField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlTextAttribute(DataType = "base64Binary")]
public byte[] Value
{
get
{
return this.valueField;
}
set
{
this.valueField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://gib.gov.tr/vedop3/eFatura")]
public partial class documentType
{
private string fileNameField;
private base64Binary binaryDataField;
private string hashField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string fileName
{
get
{
return this.fileNameField;
}
set
{
this.fileNameField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public base64Binary binaryData
{
get
{
return this.binaryDataField;
}
set
{
this.binaryDataField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string hash
{
get
{
return this.hashField;
}
set
{
this.hashField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://gib.gov.tr/vedop3/eFatura")]
public partial class getAppRespResponseType
{
private string applicationResponseField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string applicationResponse
{
get
{
return this.applicationResponseField;
}
set
{
this.applicationResponseField = value;
}
}
}
[WebMethod]
public documentReturnType sendDocument(documentType documentRequest)
{
var dcRtrn = new documentReturnType();
try
{
string sSource;
string sLog;
string sEvent;
sSource = "TEST";
sLog = "Application";
sEvent = "Sample TEST EFATURA";
if (!EventLog.SourceExists(sSource))
EventLog.CreateEventSource(sSource, sLog);
EventLog.WriteEntry(sSource, sEvent);
EventLog.WriteEntry(sSource, sEvent,
EventLogEntryType.Warning, 234);
dcRtrn.hash = documentRequest.hash;
dcRtrn.msg = "BASARIYLA ISLENDI";
return dcRtrn;
if (documentRequest.binaryData != null)
{
string WCzipPath = WebConfigurationManager.AppSettings["RecieveBatPath"];
var rtrn = EFaturaMaker.ParseEnvelope.saveZipFile(documentRequest.binaryData.Value, documentRequest.fileName, WCzipPath);
if (rtrn != null)
{
dcRtrn.hash = documentRequest.hash;
dcRtrn.msg = rtrn;
return dcRtrn;
}
}
}
catch (Exception ex)
{
dcRtrn.msg = ex.Message;
return dcRtrn;
}
return dcRtrn;
}
[WebMethod]
public getAppRespResponseType getApplicationResponse(getAppRespRequestType getAppRespRequest)
{
var rtn = new getAppRespResponseType();
rtn.applicationResponse = @"test1234567890";
return rtn;
}
}
}
ASKER
Nope it didn't help, the exactly errors I get when I trace the Web Service are:
and
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent"><System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system"><EventID>0</EventID><Type>3</Type><SubType Name="Warning">0</SubType><Level>4</Level><TimeCreated SystemTime="2014-04-04T17:18:48.2140499Z" /><Source Name="System.Web.Services.Asmx" /><Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" /><Execution ProcessName="w3wp" ProcessID="1408" ThreadID="20" /><Channel /><Computer>EFATURA</Computer></System><ApplicationData>Exception caught in System.Web.Services.Protocols.SoapServerProtocolFactory#66483446::Create.
System.Xml.XmlException: Data at the root level is invalid. Line 2, position 1.</ApplicationData></E2ETraceEvent>
and
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent"><System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system"><EventID>0</EventID><Type>3</Type><SubType Name="Warning">0</SubType><Level>4</Level><TimeCreated SystemTime="2014-04-04T17:18:48.2140499Z" /><Source Name="System.Web.Services.Asmx" /><Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" /><Execution ProcessName="w3wp" ProcessID="1408" ThreadID="20" /><Channel /><Computer>EFATURA</Computer></System><ApplicationData>Exception Details:
System.Xml.XmlException: Data at the root level is invalid. Line 2, position 1.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlTextReader.Read()
at System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read()
at System.Xml.XmlReader.MoveToContent()
at System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.MoveToContent()
at System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement()
at System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest()
at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type ty...</ApplicationData></E2ETraceEvent>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Did it by myself.
Add or remove SOAP 1.2 for ASMX services