21.07.2015, 11:26 | #1 |
Участник
|
Проблема с сервисами (401)
Добрый день.
Необходимо было написать простенький http сервис. Всё сделал как написано тут: http://blogs.msdn.com/b/axsupport/ar...-services.aspx Полученную во входящих портах ссылку открыл в экплорее. там 2 ссылки http://xxx.xxxxx.ru/MicrosoftDynamic...rvice.svc?wsdl и http://xxx.xxxxx.ru/MicrosoftDynamic...svc?singleWsdl Первая возвращает xml файл. Вторая возвратила следующую ошибку: " The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs." При попытке соединиться через написаный проект в VS выходит ошибка что то вроде "Запрос HTTP не разрешён для схемы аутентификации клиента "Basic". От сервера получен заголовок аутентификации "Basic realm = ""xxxx.xxx.ru"". ---> System.Net.WebExceptions: Удалённый сервер возвратил ошибку: (401) Несанкционированный. .... и дальше многА букав. При попытке подключиться SoapUI долго просит вбить логин/пароль...когда нервы не выдерживаю и нажимаю отмена он долго думает и возвращает ошибку :"Source: null Error: type 'ArrayOfKeyValueOfstringstring@http://schemas.microsoft.com/2003/10/Serialization/Arrays' not found." Логин и Пароль верные. Все настройки я сделал как описано в статье. Вопрос, где косяк? Сервис элементарный. По одному параметру нахожу значение и возвращаю 3 найденные переменные. У кого какие мысли? |
|
21.07.2015, 12:46 | #2 |
Участник
|
У SoapUI есть известные проблемы аутентификации при работе с сервисами AIF, см. также Web services и SOAP
|
|
21.07.2015, 13:38 | #3 |
Участник
|
Да. Я в курсе что там всё не просто. Нашёл ссылку на похожую тему [url=http://axforum.info/forums/showthread.php?t=48257[/URL] Попробовал подключиться через WCF Test Client]Web services и SOAP. Вышла вот такая ошибка:
"c:\Users\xxx\AppData\Local\Temp\Test Client Projects\12.0\74c20062-1c52-4454-983c-533474f2acc8\Client.cs(302,73) : error CS0234: Имя типа или пространства имен "Application" отсутствует в пространстве имен "Microsoft.Dynamics.Ax" (пропущена ссылка на сборку?)" Что за пространство имён? Где что я забыл прописать? |
|
22.07.2015, 10:33 | #4 |
Участник
|
Про Basic Authentication написано здесь
Про SOAP UI надо делать так: Предположим мой логин Test и пароль 1234qwer, и ссылка на wsdl http://MyTestServer:8101/MicrosoftDy...xppservice.svc В SoapUI указываем ссылку http://Test:1234qwer@MyTestServer:8101/MicrosoftDynamicsAXAif60/TestService/xppservice.svc?wsdl Когда SoapUI сгенерит контракт, надо будет перед отправкой сервису контракта указать теже учетные данные мой логин Test и пароль на вкладке Authorization: Цитата:
отсутствует в пространстве имен "Microsoft.Dynamics.Ax" (пропущена ссылка на сборку?)"
|
|
|
За это сообщение автора поблагодарили: raniel (1). |
22.07.2015, 10:41 | #5 |
Участник
|
Цитата:
отсутствует в пространстве имен "Microsoft.Dynamics.Ax" (пропущена ссылка на сборку?)"
|
|
22.07.2015, 10:48 | #6 |
Участник
|
Спасибо за активную помощь. CIL полный я делал уже ни раз... .
Есть Примеры как решить проблему с NameSpace, но это для C#... типа нужно указать, но у нас то всё автоматом берётся...все эти ссылки уже указаны в макросе Aif. И в этот процесс не можем/не должны вмешиваться. Кстати вот ссылка на подобную проблему....но видимо я что-то не так делаю, либо незнаю уже... Axilicious:AX2012 R2 Enterprise portal installation issues – Part 1 |
|
23.07.2015, 09:36 | #7 |
Участник
|
Цитата:
Кстати вот ссылка на подобную проблему....но видимо я что-то не так делаю, либо незнаю уже...
Вы как сервис сделали? Через отдельный класс или используя Wizard? |
|
23.07.2015, 13:46 | #8 |
Участник
|
Через отдельный класс. Простенький сервис. На входе один атрибут на выходе 3 параметра(типы простые).
|
|
23.07.2015, 13:52 | #9 |
Участник
|
А вы сделали как написано тут:
Цитата:
The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs."
|
|
23.07.2015, 14:07 | #10 |
Участник
|
Да сделал. И получил подробности ошибки ... когда нажимаю вторую ссылку http://xxx.xxxxx.ru/MicrosoftDynamic...svc?singleWsdl получаю вот такой ответ
Цитата:
The service encountered an error.
An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:System.NotSupportedException: A single WSDL document could not be generated for this service. Multiple service contract namespaces were found (http://schemas.microsoft.com/netfx/2009/05/routing, http://tempuri.org). Ensure that all your service contracts have the same namespace. at System.ServiceModel.Description.WsdlHelper.VerifyContractNamespace(List`1 wsdls) at System.ServiceModel.Description.WsdlHelper.GetSingleWsdl(MetadataSet metadataSet) at System.ServiceModel.Description.ServiceMetadataExtension.EnsureSingleWsdlInitialized() at System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.TryHandleMetadataRequest(Message httpGetRequest, String[] queries, Message& replyMessage) at System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.ProcessHttpRequest(Message httpGetRequest) at SyncInvokeGet(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) |
|
23.07.2015, 14:11 | #11 |
Участник
|
Вот метод из моего сервиса:
X++: [SysEntryPointAttribute(true), AifCollectionTypeAttribute('_salesAgreementId', Types::String, extendedtypestr(SalesAgreementId))] public ConsumerContract PR_LS_INFO_DATA(SalesAgreementId _salesAgreementId) { ConsumerContract contract; SalesAgreementHeaderAddInform salesAgreementHeaderAddInform; salesAgreementHeaderAddInform = SalesAgreementHeaderAddInform::findSalesNumberSequence(_salesAgreementId); contract = new ConsumerContract(); if(!energSalesAgreementHeaderAddInform) throw error (strFmt("@XXX4415",_salesAgreementId)); else { contract.parmSalesAgreementId(salesAgreementHeaderAddInform.SalesNumberSequence); contract.parmName(salesAgreementHeaderAddInform.name()); contract.parmAddress(salesAgreementHeaderAddInform.addresOtherFormatted()); } return contract; } Последний раз редактировалось raniel; 23.07.2015 в 14:13. |
|
23.07.2015, 14:15 | #12 |
Участник
|
А так?
X++: [SysEntryPointAttribute(false), AifCollectionTypeAttribute('_salesAgreementId', Types::String, extendedtypestr(SalesAgreementId)), AifCollectionTypeAttribute('return', Types::Class, classStr(ConsumerContract))] |
|
23.07.2015, 14:22 | #13 |
Участник
|
Вообще ничего не поменялось...Всё отцилил, заново развернул.... Без изменений.
|
|
23.07.2015, 14:29 | #14 |
Участник
|
У меня была такая ошибка, но сервис работал.
А в группу сервисов вы добавили один сервис или несколько? Судя по ошибке у вас используются разные контракты. |
|
23.07.2015, 14:32 | #15 |
Участник
|
Это тестовый пример. В классе один метод. Я его один и добавляю в сервис. Есть одноимённый метод в другом совсем классе. и он нигде не используется. Не думаю что они конфликтуют.
ЗЫ На всякий случай в другом классе этот метод переименовал, а связанный сервис выключил...Результата ноль Последний раз редактировалось raniel; 23.07.2015 в 14:44. |
|
04.12.2015, 10:58 | #16 |
Участник
|
Цитата:
Multiple service contract namespaces were found (http://schemas.microsoft.com/netfx/2009/05/routing, http://tempuri.org).
В моем случае название service contract namespaces было другим. |
|
|
За это сообщение автора поблагодарили: Logger (3), gl00mie (5), SOVA (1), -DocSerzh- (1), Maximin (5). |
Теги |
401, service, soap, сервис |
|
|