Бросать исключение SoapException в веб-сервис .Net
РЕДАКТИРОВАТЬ: Я рыскал высоко и низко для ответа на этот вопрос, и, похоже, никто не получает аналогичные проблемы. Мне кажется, что бросатьSoapException
следует отформатировать ответ, как требуется, а не только с сообщением об исключении. Любая помощь с благодарностью получена.
Я пытаюсь вернутьSoapException
это должно выглядеть примерно так (пример):
HTTP/1.1 500 Internal Server Error.
Date: Wed, 26 May 2004 05:12:08 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 1.1.4322
Cache-Control: private
Content-Type: text/xml; charset=utf-8
Content-Length: 488
soap:Server
BlahBlahBlahBlahBlah
Для этого я реализовал такой код, взятый с сайта MSDN для:SoapException
Imports System
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Xml.Serialization
Imports System.Xml
_
_
_
Public Class Service1
Inherits System.Web.Services.WebService
Public Sub Process()
' Build the detail element of the SOAP fault.
Dim doc As New System.Xml.XmlDocument()
Dim node As System.Xml.XmlNode = doc.CreateNode(XmlNodeType.Element, _
SoapException.DetailElementName.Name, _
SoapException.DetailElementName.Namespace)
' Build specific details for the SoapException.
' Add first child of detail XML element.
Dim details As System.Xml.XmlNode = doc.CreateNode(XmlNodeType.Element, _
"mySpecialInfo1", "http://tempuri.org/")
' Add second child of detail XML element with an attribute.
Dim details2 As System.Xml.XmlNode = doc.CreateNode(XmlNodeType.Element, _
"mySpecialInfo2", "http://tempuri.org/")
Dim attr As XmlAttribute = doc.CreateAttribute("t", "attrName", _
"http://tempuri.org/")
attr.Value = "attrValue"
details2.Attributes.Append(attr)
' Append the two child elements to the detail node.
node.AppendChild(details)
node.AppendChild(details2)
'Throw the exception
Dim se As New SoapException("Fault occurred", SoapException.ClientFaultCode, _
Context.Request.Url.AbsoluteUri, node)
Throw se
Return
End Sub
End Class
Однако, когда я запускаю это, фактический отправленный ответ:
HTTP/1.1 500 Internal Server Error
Server: ASP.NET Development Server/10.0.0.0
Date: Wed, 03 Jul 2013 13:06:26 GMT
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Content-Length: 233
Connection: Close
System.Web.Services.Protocols.SoapException: Fault occurred
at MyService.Service1.Process() in C:\MyLocation\MyService\Service1.asmx.vb:line 42
Как получить ответ в формате: