Статус: Участник
Группы: Участники
Зарегистрирован: 09.10.2015(UTC) Сообщений: 10
|
Добрый день. При подключении к ЕСИА при попытке зарегистрировать сертификат Код:var messageData = new MessageDataType{ AppData = new AppDataType { Any = regXml } };
var registerInfo = new RegisterCertificate(null, GetMessageType(), messageData);
var smevClient = GetSmevClient(clientCert, serverCert);
var resp = ((RegistrationServicePortType) smevClient).registerCertificate(registerInfo);
получаем Цитата: System.InvalidOperationException: Возникла ошибка при отражении "MessageData". ---> System.InvalidOperationException: Верхний элемент XML "MessageData" из пространства имен "http://smev.gosuslugi.ru/rev120315" ссылается на отдельные типы RegCertificate.RegistrationService.RegisterRequestMessageDataType и RegCertificate.RegistrationService.RegisterResponseMessageDataType. Используйте атрибуты XML, чтобы задать другое имя или пространство имен XML для элемента или типов. в System.Xml.Serialization.XmlReflectionImporter.ReconcileAccessor(Accessor accessor, NameTable accessors) в System.Xml.Serialization.XmlReflectionImporter.ReconcileLocalAccessor(ElementAccessor accessor, String ns) в System.Xml.Serialization.XmlReflectionImporter.ImportAccessorMapping(MemberMapping accessor, FieldModel model, XmlAttributes a, String ns, Type choiceIdentifierType, Boolean rpc, Boolean openModel, RecursionLimiter limiter) в System.Xml.Serialization.XmlReflectionImporter.ImportMemberMapping(XmlReflectionMember xmlReflectionMember, String ns, XmlReflectionMember[] xmlReflectionMembers, Boolean rpc, Boolean openModel, RecursionLimiter limiter) в System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlReflectionMember[] xmlReflectionMembers, String ns, Boolean hasWrapperElement, Boolean rpc, Boolean openModel, RecursionLimiter limiter) --- Конец трассировки внутреннего стека исключений --- в System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlReflectionMember[] xmlReflectionMembers, String ns, Boolean hasWrapperElement, Boolean rpc, Boolean openModel, RecursionLimiter limiter) в System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(String elementName, String ns, XmlReflectionMember[] members, Boolean hasWrapperElement, Boolean rpc, Boolean openModel, XmlMappingAccess access) в System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.XmlSerializerImporter.ImportMembersMapping(XmlName elementName, String ns, XmlReflectionMember[] members, Boolean hasWrapperElement, Boolean rpc, Boolean isEncoded, String mappingKey) в System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector.ImportMembersMapping(String elementName, String ns, XmlReflectionMember[] members, Boolean hasWrapperElement, Boolean rpc, String mappingKey) в System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector.LoadBodyMapping(MessageDescription message, String mappingKey, MessagePartDescriptionCollection& rpcEncodedTypedMessageBodyParts) в System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector.CreateMessageInfo(MessageDescription message, String key) в System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector.EnsureMessageInfos() в System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.EnsureMessageInfos() в System.ServiceModel.Description.XmlSerializerOperationBehavior.CreateFormatter() в System.ServiceModel.Description.XmlSerializerOperationBehavior.System.ServiceModel.Description.IOperationBehavior.ApplyClientBehavior(OperationDescription description, ClientOperation proxy) в System.ServiceModel.Description.DispatcherBuilder.BindOperations(ContractDescription contract, ClientRuntime proxy, DispatchRuntime dispatch) в System.ServiceModel.Description.DispatcherBuilder.ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime clientRuntime) в System.ServiceModel.Description.DispatcherBuilder.BuildProxyBehavior(ServiceEndpoint serviceEndpoint, BindingParameterCollection& parameters) в System.ServiceModel.Channels.ServiceChannelFactory.BuildChannelFactory(ServiceEndpoint serviceEndpoint, Boolean useActiveAutoClose) в System.ServiceModel.ChannelFactory.CreateFactory() в System.ServiceModel.ChannelFactory.OnOpening() в System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) в System.ServiceModel.ChannelFactory.EnsureOpened() в System.ServiceModel.ChannelFactory`1.CreateChannel(EndpointAddress address, Uri via) в System.ServiceModel.ChannelFactory`1.CreateChannel() в System.ServiceModel.ClientBase`1.CreateChannel() в System.ServiceModel.ClientBase`1.CreateChannelInternal() в System.ServiceModel.ClientBase`1.get_Channel() в RegCertificate.RegistrationService.RegistrationServicePortTypeClient.RegCertificate.RegistrationService.RegistrationServicePortType.registerCertificate(RegisterCertificate request) в C:\TfsAgents\TfsAgent1\agent\_work\58\s\RegCertificateLib\Service References\RegistrationService\Reference.cs:строка 4265 в RegCertificate.SmevLib.RegisterCertificate(Certificate certificate, X509Certificate2 clientCert, X509Certificate2 serverCert) в C:\TfsAgents\TfsAgent1\agent\_work\58\s\RegCertificateLib\RegCertificate.cs:строка 123 в RegCertificate.Helper.SmevHelper.RegisterCertificate(Certificate certificate) в C:\WORK_GIT\SMEV_WinForms\RegCertificate
на классах стоят Xml атрибуты Код:
/// <summary>
/// Класс, описывающий сертификат
/// </summary>
[Serializable]
[XmlType(Namespace = "http://mks.esia.rstyle.ru/")]
[XmlRoot(ElementName = "esia")]
public class Certificate
{
/// <summary>
/// Пространство имен
/// </summary>
[XmlNamespaceDeclarations]
public XmlSerializerNamespaces Xmlns;
/// <summary>
/// Серийный номер сертификата ключа КЭП
/// </summary>
[XmlElement(ElementName = "serialNumber", Namespace = "http://mks.esia.rstyle.ru/")]
public string SerialNumber { get; set; }
/// <summary>
/// Имя организации – издателя сертификата ключа КЭП
/// </summary>
[XmlElement(ElementName = "issuerOrgName", Namespace = "http://mks.esia.rstyle.ru/")]
public string IssuerOrgName { get; set; }
...
/// <summary>
/// ctor
/// </summary>
public Certificate()
{
Xmlns = new XmlSerializerNamespaces();
Xmlns.Add("esia", "http://mks.esia.rstyle.ru/");
}
}
Формировать запрос вручную и отправлять через HttpWebRequest согласно теме это не решение. Хотелось бы довести работу с WCF сервисом до ума. Причем ранее мы уже использовали WCF сервис и отправка в СМЭВ проходила успешно. Пока не обновили сам сервис. У кого есть какие предложения ?
|