HI
Моя работа заключалась в том, чтобы создать веб-сервис, который действовал бы как другой веб-сервис, который у нас есть, поэтому клиент не замечает разницы. Я создал весь свой веб-сервис, и он отлично работает, так как я использую его, и результаты все одинаковы. Дело в том, что я создал клиентское приложение, в котором я использую старый веб-сервис, и если я изменяю URL-адрес веб-ссылки на новый сервис и повторяю, я получаю ошибку:
System.Web.Services.Protocols.SoapException:
Сервер не распознал
HTTP-заголовок SOAPAction
Если я посмотрю на различия в Reference.cs в двух моих веб-сервисах, то обнаружу, что есть небольшая разница в атрибутах, что, я думаю, является проблемой.
Новый сервис:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.3053")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="SprWebServiceSoap", Namespace="http://ws.hl7.trispark.com/")]
public partial class SprWebService : System.Web.Services.Protocols.SoapHttpClientProtocol {
Старый сервис:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.3053")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="SprWebServiceRemoteBinding", Namespace="http://ws.hl7.trispark.com/")]
public partial class SprWebService : System.Web.Services.Protocols.SoapHttpClientProtocol {
А также метод, который используется:
Новое:
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://ws.hl7.trispark.com/invoke", RequestNamespace="http://ws.hl7.trispark.com/", ResponseNamespace="http://ws.hl7.trispark.com/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public invokeResponse invoke(invoke inv) {
Старый:
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("invokeResponse", Namespace="http://ws.hl7.trispark.com/types")]
public invokeResponse invoke([System.Xml.Serialization.XmlElementAttribute("invoke", Namespace="http://ws.hl7.trispark.com/types")] invoke invoke1) {
Сначала я подумал, что проблема может заключаться в том, что моя версия была создана в vs2008, а старая - в vs2005, поэтому я пересоздал ее в 2005 году, но это ничего не изменило.
Дело в том, что у меня нет кода старого, поэтому я не вижу, какие конкретные атрибуты используются.
Кто-нибудь знает, какие атрибуты я должен установить, чтобы получить то же самое?
Большое спасибо!