CardSpaceException: на компьютере не обнаружено установленной версии службы CardSpace.

во-первых, я понятия не имею, что делаю. Я разработчик Java, и мне нужно исправить программу на C #, написанную кем-то другим.

Нам пришлось обновить и переместить веб-службы на другую машину. Обновление включало изменение https. Инструмент, который мне нужно исправить, используется для загрузки файлов в веб-службу и работает на том же компьютере, что и служба. Связь осуществляется по протоколу SOAP (я думаю) с использованием файла wsdl. SSL-сертификат является самоподписанным, но хранится в надежном хранилище сертификатов.

Сначала я попытался просто изменить пути к новому серверу, но инструмент загрузки пожаловался на изменение на https. К сожалению, у меня больше нет исключения.

Затем я повторно импортировал новый wsdl и теперь получаю:

System.IdentityModel.Selectors.CardSpaceException: на компьютере не обнаружено установленной версии службы CardSpace. Установите CardSpace и повторите операцию.

Трассировка стека сервера: в System.IdentityModel.Selectors.CardSpaceShim.GetCardSpaceImplementationDll() в System.IdentityModel.Selectors.CardSpaceShim.InitializeIfNeeded ()
в System.IdentityModel.Selectors.CardSpaceOnlineTelectors, в System.IdentityModel.Selectors.CardSpaceOnselector.GetCardSpaceCenselector.GetCardSpaceCenialTelectors, ServiceModel.Description.ClientCredentials.GetInfoCardSecurityToken(логическое значение требуетInfoCard, цепочку CardSpacePolicyElement[], SecurityTokenSerializer tokenSerializer) в System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessressage [на сервере], ObjectPrivateProcessressage [на сервере], ObjectPrivateProcessressage [на сервере], ObjectPrivateProcessressage] [объект]System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(сообщение IMessage, ответ IMessageSink)

Исключение повторно генерируется в [0]: в System.Runtime.AsyncResult.End[TAsyncResult](результат IAsyncResult)
в System.ServiceModel.Channels.ServiceChannel.DisplayInitializationUI() в System.ServiceModel.Channels.ServiceChannel.CallDisplayUIOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(канал TimeShannelServiceChannel). CallOnceManager.CallOnce (тайм-аут TimeSpan, каскад CallOnceManager) в System.ServiceModel.Channels.ServiceChannel.EnsureDisplayUI() в System.ServiceModel.Channels.ServiceChannel.Call(действие со строкой, операция Boolean oneway, Object [String], операция в режиме реального времени], Object [ out, тайм-аут TimeSpan) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, операция ProxyOperationRuntime) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke(сообщение IMessage)

Исключение повторно генерируется в [1]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessagereqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData и msgData, IntIIkarvice тип CLIMERDATA). IImportUploadService.UploadFile(запрос FileUploadMessage) на CLIIkarosImport.ImportUploadService.ImportUploadServiceClient.CLIIkarosImport.ImportUploadService.IImportUploadService.UploadFile(запрос FileUploadMessage) в C: \ projekte_c # \ CLIIkarosImport \ CLIIkarosImport \ Сервис \ Ссылки \ ImportUploadService Reference.cs: строка 194 в CLIIkarosImport. ImportUploadService.ImportUploadServiceClient.UploadFile(Int64 FileSize, String OriginalFileName, String UserIpV4, String UserIpV6, String UserName, Stream FileStream, String & FileId, String & Message) в C:\projekte_c#\CLIIkarosImport\CLIIkarosImport\ServiceReferences\ImportUploadService\Reference.cs: строка 205 в CLIIkarosImport.Webservice.Import.ImportServiceModule.<>c__DisplayClass0_0.<.ctor>b__2(\ projek_import_class0_0. CLIIkarosImport \ Webservice \ Import \ ImportServiceModule.cs: строка 86

               Get["/ImportFromPublicLocation/{path}"] = x =>
         {
                string newPath = x.path;
                newPath = newPath.Replace("-*-", ".");
                newPath = newPath.Replace("-#-", @"\");

                var path = Uri.UnescapeDataString(newPath);    
                Console.WriteLine($"Given path is {path}");

                if (!File.Exists(path))
                {
                    Console.WriteLine("File doesn't exist!");
                    return new Response() {StatusCode = HttpStatusCode.NoContent};
                }

                var response = new CustomResponse();

                using (var client = new ImportUploadServiceClient())
                {
                    var fileName = Path.GetFileName(path);
                    var fStream = new FileStream(path, FileMode.Open);

                    string id, message;
                    ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
                    try
                    {
                        var fResponse = client.UploadFile(fStream.Length, fileName, "", "", "Import", fStream, out id, out message);
                        Console.WriteLine($"Response is {fResponse}");
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        throw;
                    }
                    
                    response.JobId = id;
                    response.Message = message;
                }

                return new JsonResponse<CustomResponse>(response, defaultJsonSerializer);
            };

Я не знаю, является ли проблема переходом на https или переходом на новый сервер. Я не знаю, вносил ли мой предшественник какие-либо изменения в старую машину, чтобы она работала.

Дайте мне знать, если вам понадобится дополнительная информация.

РЕДАКТИРОВАТЬ: Я думаю, что это проблема в самом приложении. Я получаю такое же исключение, если веб-сервер выключен, и я не могу найти никаких обращений к api-серверу в wirehark.

1 ответ

В конце концов, это была проблема безопасности при аутентификации пользователя с помощью STS (AD FS или FS-STS), и мне пришлось использовать классы из библиотеки DLL, предоставленной поставщиком услуг, для подключения к службе.

Другие вопросы по тегам