是否可以从WebAPI服务调用SOAP服务?

时间:2017-02-03 16:19:29

标签: c# asp.net-web-api soap

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

我有一个基于WebAPI(EntryPoints项目)的项目,我也有一个带SOAP服务的Legacy Framework。 我想将文件上传到Legacy Framework Repository(即FW的所有服务已经过测试并成功用于其他项目),但是通过一个EntryPoint项目,它连接到我的FrontEnd(JS)。

工作流程如下所示:

  1. 必须在EntryPoint Project的目录中加载文件。

  2. 如果加载了文件(EntryPoint的WebAPI服务仍然在 使用),必须启动SOAP服务,并将此文件加载到其存储库。

  3. 但是如果我尝试读取(原文如此!)来自EntryPoint目录的文件我有一个例外:另一个进程阻止了文件。我使用过" Handle.exe"程序识别阻塞过程,它是一个过程" iisexpress"。这是一个EntryPoint申请流程。

    Hier是EntryPoint项目中的代码(我试图让代码更容易理解):

    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);
       }
    

0 个答案:

没有答案