Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可以从WebAPI服务调用SOAP服务吗?_C#_Asp.net Web Api_Soap - Fatal编程技术网

C# 可以从WebAPI服务调用SOAP服务吗?

C# 可以从WebAPI服务调用SOAP服务吗?,c#,asp.net-web-api,soap,C#,Asp.net Web Api,Soap,我想知道,通常可以从WebAPI服务调用SOAP服务吗 我有一个基于WebAPI(EntryPoints项目)的项目,还有一个带有SOAP服务的遗留框架。 我想上传一个文件到遗留框架存储库(即FW的所有服务都已经过测试并成功用于其他项目),但要通过一个入口点项目,该项目连接到我的前端(JS) 工作流类似于以下过程: 必须在EntryPoint项目的目录中加载文件 如果文件已加载(EntryPoint的WebAPI服务仍处于 必须启动SOAP服务,并且此文件正在加载到其存储库中 但是如果我试图从E

我想知道,通常可以从WebAPI服务调用SOAP服务吗

我有一个基于WebAPI(EntryPoints项目)的项目,还有一个带有SOAP服务的遗留框架。 我想上传一个文件到遗留框架存储库(即FW的所有服务都已经过测试并成功用于其他项目),但要通过一个入口点项目,该项目连接到我的前端(JS)

工作流类似于以下过程:

  • 必须在EntryPoint项目的目录中加载文件

  • 如果文件已加载(EntryPoint的WebAPI服务仍处于 必须启动SOAP服务,并且此文件正在加载到其存储库中

  • 但是如果我试图从EntryPoint目录中读取文件,我会遇到一个异常:另一个进程会阻止该文件。我使用了一个“Handle.exe”程序来识别阻塞进程,它是一个进程“iisexpress”。这是一个入口点应用程序流程

    Hier是EntryPoint项目中的一个代码(我已尝试使代码更易于理解):

    试试看
    {
    int fileId=wait Task.Factory.StartNew(()=>
    {
    //将文件上载到EntryPoint项目的临时目录
    Request.Content.ReadAsMultipartAsync(提供者);
    字符串fileName=provider.FileData[0].LocalFileName;
    返回文件名;
    }
    ,取消令牌。无,
    TaskCreationOptions.LongRunning,
    TaskScheduler.FromCurrentSynchronizationContext())
    .ContinueWith(文件任务=>
    {
    字符串filePath=fileTask.Result;
    //在下一行抛出异常
    int ident=clientOfLegacyFramework.UploadFileToRepositoryAndSaveItInDB(文件路径);
    ...
    返回标识;
    }
    ,CancellationToken。无
    ,TaskContinuationOptions.LongRunning
    |TaskContinuationOptions.AttachedToParent
    |TaskContinuationOptions.OnlyOnRanToCompletion
    ,TaskScheduler.Default);
    返回请求.CreateResponse(HttpStatusCode.OK,fileId);
    }
    捕获(例外e)
    {
    返回请求.CreateErrorResponse(HttpStatusCode.InternalServerError,e);
    }
    
    try
       {
         int fileId = await Task.Factory.StartNew<string>(() =>
             {
                // Upload a file to temporary directory of EntryPoint Project
                Request.Content.ReadAsMultipartAsync(provider);
                string fileName = provider.FileData[0].LocalFileName;
                return fileName;
             }
             , CancellationToken.None,
             TaskCreationOptions.LongRunning,
             TaskScheduler.FromCurrentSynchronizationContext())
         .ContinueWith<int>(fileTask =>
             {
                string filePath = fileTask.Result;
                // Exception is thrown on the next line
                int ident = clientOfLegacyFramework.UploadFileToRepositoryAndSaveItInDB(filePath);
                ...
                return ident;
             }
             , CancellationToken.None
             , TaskContinuationOptions.LongRunning
               | TaskContinuationOptions.AttachedToParent
               | TaskContinuationOptions.OnlyOnRanToCompletion
               , TaskScheduler.Default);
    
         return Request.CreateResponse(HttpStatusCode.OK, fileId);
       }
       catch (Exception e)
       {
         return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
       }