我正在使用.asmx webservice,并且遇到通过POST方法发送XML文件的麻烦。我相信这与webservice中的POST绑定有关,但老实说我不知道。不幸的是,由于各种原因,我无法转移到WCF。
如果我查看WSDL,POST绑定会显示输入类型“application / x-www-form-urlencoded”。但是,我的客户端无法以这种方式发送数据,并且必须使用POST方法,并且必须发送XML文件。
我已经确认该服务可以正常使用URLencoded方法。如果我将clientide mini-utility上的内容类型切换为“text / xml”,我会按预期获得“无效格式”响应。
我可以将POST绑定的服务器端输入类型更改为“text / xml”吗?
抱歉,我无法提供网络服务的网址。客户要求我不要透露这一点,但我可以根据需要发布其他详细信息。
以下是我的.asmx文件中的相关代码:
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Xml
<System.Web.Services.WebService(Namespace:="https://My.Namespace.com/", Name:="ProcessSO", Description:="Process incoming Sales Order XML")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=Services.WsiProfiles.None)> _
<ToolboxItem(False)> _
Public Class ProcessSO
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function SalesOrderIn(ByVal XMLIn As String) As XmlDocument
Dim msConfig As System.Configuration.Configuration
msConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath)
Dim filePath As String = msConfig.AppSettings.Settings("POSaveDirectory").Value
Dim sFile As String = System.IO.Path.Combine(filePath, "temp_in.txt")
Using s As New System.IO.StreamWriter(sFile) 'filePath & "\temp_in.txt")
s.Write(XMLIn.ToString)
s.Flush()
s.Close()
End Using
Return CreateReturnXML("1", "XML Data Recieved")
End Function
End Class