.Net中Sabre SOAP API EPS_EXT_ProfileReadRQ的问题

.Net中Sabre SOAP API EPS_EXT_ProfileReadRQ的问题,.net,sabre,.net,Sabre,我从sabre构建了一个简单的项目来测试EPS_EXT_ProfileReadRQ soap api,我可以使用soapUI工具很好地使用它。通过API检索概要文件的非常简单和基本的场景。使用VS2013上的“添加服务引用”构建我的代理类,然后创建一个简单接口来实现调用。我的界面如下所示: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threa

我从sabre构建了一个简单的项目来测试EPS_EXT_ProfileReadRQ soap api,我可以使用soapUI工具很好地使用它。通过API检索概要文件的非常简单和基本的场景。使用VS2013上的“添加服务引用”构建我的代理类,然后创建一个简单接口来实现调用。我的界面如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using getSabreProfile.EPS_ProfileReadService;

namespace getSabreProfile.Service
{
    public interface IGetProfileService
    {
        Sabre_OTA_ProfileReadRS getProfile(string Token, string Domain, string ProfileId);
    }

    public class GetProfileService : IGetProfileService
    {
        private EPS_ProfileReadPortTypeClient service = new EPS_ProfileReadPortTypeClient();

        public GetProfileService()
        {

        }

        public Sabre_OTA_ProfileReadRS getProfile(string Token, string Domain, string ProfileId)
        {
            var _security = new Security
            {
                BinarySecurityToken = Token
            };

            var _messageHeader = new MessageHeader
            {
                From = new From
                {
                    PartyId = new PartyId[1] { new PartyId { Value ="Client" } }
                },
                To = new To
                {
                    PartyId = new PartyId[1] { new PartyId { Value = "Sabre" } }
                },
                CPAId = "CL41",
                ConversationId = "Profiles",
                Action = "EPS_EXT_ProfileReadRQ",
                MessageData = new MessageData
                {
                    RefToMessageId = "Profiles Get Profile",
                    Timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
                }
            };

            var _sabre_OTA_ProfileReadRQ = new Sabre_OTA_ProfileReadRQ
            {
                Version = "6.19",
                Item = new ProfileType
                {
                    TPA_Identity = new ProfileTypeTPA_Identity
                    {
                        UniqueID = ProfileId,
                        DomainID = Domain,
                        ClientCode = "TN",
                        ProfileTypeCode = ProfileTypeInfo.TVL,
                        ClientContextCode = "MYS"
                    }
                }
            };

            var response = service.EPS_ProfileReadRQ(ref _messageHeader, ref _security, _sabre_OTA_ProfileReadRQ);

            return response;
        }
    }
}
然后我只是从我的程序中实例化接口:

private void btnGetProfile_Click(object sender, EventArgs e)
{
    GetProfileService _getProfile = new GetProfileService();

    var res = _getProfile.getProfile(tbToken.Text, tbDomain.Text, tbProfileId.Text);
}
应用程序编译时没有错误,但在运行时我收到一个错误:

There was an error in serializing one of the headers in message EPS_ProfileReadRQRequest: 'Unable to generate a temporary class (result=1).

error CS0030: Cannot convert type 'getSabreProfile.EPS_ProfileReadService.IgnoreReadSubjectAreasType' to 'getSabreProfile.EPS_ProfileReadService.PartialReadSubjectAreasType'

error CS0029: Cannot implicitly convert type 'getSabreProfile.EPS_ProfileReadService.PartialReadSubjectAreasType' to 'getSabreProfile.EPS_ProfileReadService.IgnoreReadSubjectAreasType'
在我看来,VS2013没有正确地为web服务生成代理类,类型的映射也没有正确地解析,但我一直在寻找解决方案。我愿意手动调整代理类代码,但不知道在哪里进行更改,也不知道该做什么!。。我希望这里有人能帮忙


谢谢

wsdl.exe/o:sabreenhancedarbook3.3.0RQ.vb/l:vb我像这样手动生成代理计算。我尝试了,但没有成功:-(…您是否能够使用特定的web服务EPS_EXT_ProfileReadRQ?我实现了许多其他SOAP消息,只有这一条我有问题…VS2013在您添加为服务引用时已经使用wsdl.exe,@Carlos-只是好奇您是否取得了任何进展。我过去在VS2012中使用较旧的配置文件方法b取得了成功但是这些较新的Sabre Profiles方法给了我一些麻烦。但是,我现在使用VS2017并在VS之外运行wsdl.exe来生成代理类。我必须对代理类进行调整,但这与您的错误无关。Thx。