我想知道,通常可以从WebAPI服务调用SOAP服务吗?
我有一个基于WebAPI(EntryPoints项目)的项目,我也有一个带SOAP服务的Legacy Framework。 我想将文件上传到Legacy Framework Repository(即FW的所有服务已经过测试并成功用于其他项目),但是通过一个EntryPoint项目,它连接到我的FrontEnd(JS)。
工作流程如下所示:
必须在EntryPoint Project的目录中加载文件。
如果加载了文件(EntryPoint的WebAPI服务仍然在 使用),必须启动SOAP服务,并将此文件加载到其存储库。
但是如果我尝试读取(原文如此!)来自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);
}