首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CardSpaceException:没有在机器上安装CardSpace服务的版本

CardSpaceException:没有在机器上安装CardSpace服务的版本
EN

Stack Overflow用户
提问于 2021-09-20 10:24:41
回答 1查看 229关注 0票数 0

首先,我不知道我在做什么。我是一个Java,我必须修复其他人编写的C#程序。

我们不得不更新web服务并将其移动到另一台机器上。更新包括了对https的更改。我必须修复的工具用于将文件上传到web服务,并与服务运行在同一台机器上。通信是通过SOAP (我认为)使用wsdl文件实现的。SSL-证书是自签名的,但存储在可信的证书存储中。

首先,我试图更改到新服务器的路径,但是上传工具抱怨到https的更改。不幸的是,我不再有例外了。

然后我重新导入了新的wsdl,现在我得到了:

没有发现机器上安装了System.IdentityModel.Selectors.CardSpaceException:服务的

版本。请安装CardSpace并重试操作。

服务器堆栈跟踪: at System.IdentityModel.Selectors.CardSpaceShim.GetCardSpaceImplementationDll() at System.IdentityModel.Selectors.CardSpaceShim.InitializeIfNecessary()

在System.IdentityModel.Selectors.CardSpaceSelector.GetToken(CardSpacePolicyElement[] policyChain,SecurityTokenSerializer tokenSerializer) at System.ServiceModel.Description.ClientCredentials.GetInfoCardSecurityToken(Boolean requiresInfoCard,CardSpacePolicyElement[] chain,SecurityTokenSerializer tokenSerializer) at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object[] args,Object server,Object[]& outArgs)在System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg,IMessageSink replySink)

异常重新引发at : at System.Runtime.AsyncResult.EndTAsyncResult

在System.ServiceModel.Channels.ServiceChannel.DisplayInitializationUI() at System.ServiceModel.Channels.ServiceChannel.CallDisplayUIOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel通道,TimeSpan超时值)在System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan超时时,CallOnceManager级联)在System.ServiceModel.Channels.ServiceChannel.EnsureDisplayUI() at System.ServiceModel.Channels.ServiceChannel.Call(String动作,布尔单向操作,ProxyOperationRuntime操作,Object[] ins,Object[] outs,TimeSpan超时)在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,( System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage消息的ProxyOperationRuntime操作)

异常在1: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg( at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 type)应CLIIkarosImport.ImportUploadService.IImportUploadService.UploadFile(FileUploadMessage请求)在C:\projekte_c#\CLIIkarosImport\CLIIkarosImport\Service References\ImportUploadService\Reference.cs:line 194 at CLIIkarosImport.ImportUploadService.ImportUploadServiceClient.UploadFile(Int64 FileSize,String OriginalFileName,String UserIpV4,String UserIpV6,String UserName,( C:\projekte_c#\CLIIkarosImport\CLIIkarosImport\Service References\ImportUploadService\Reference.cs:line 205 at CLIIkarosImport.Webservice.Import.ImportServiceModule.<>c__DisplayClass0_0.<.ctor>b__2(Object x)中的C:\projekte_c#\CLIIkarosImport\CLIIkarosImport\Webservice\Import\ImportServiceModule.cs:line 86中的FileStream、String& FileId、String& Message)

代码语言:javascript
复制
         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的更改是问题所在,还是移动到新服务器。我不知道我的前任是否对这台旧机器做了任何改动以使它正常工作。

如果你需要更多的信息,请告诉我。

编辑:我认为这是应用程序本身的一个问题。如果webserver被关闭,并且在wireshark中找不到对api-server的任何调用,我也会得到同样的异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-22 08:34:12

最后,这是STS (AD、FS或FS)用户身份验证中的一个安全问题,我不得不使用服务提供者提供的DLL中的类来连接到服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69252843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档