У меня есть REST API Service. Ниже приведен метод API-контроллера.
public class ExcelUploadController : ApiController
{
[HttpPost]
public async Task<HttpResponseMessage> Upload(HttpRequestMessage request)
{
if (!request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
HttpPostedData postedData = await Request.Content.ParseMultipartAsync();
ProcessFile postedFile = new ProcessFile(postedData);
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(postedFile.Process())
};
}
}
Возвращает данные в формате JSON загруженного файла Excel.
И ниже мой клиентский код, который использует RESTSharp
int ReadWriteTimeout = -1;
RestClient restClient = new RestClient("https://restfulservice.domain.com");
RestRequest restRequest = new RestRequest("api/excelupload/Upload");
int readWriteTimeout = restRequest.ReadWriteTimeout > 0
? restRequest.ReadWriteTimeout
: ReadWriteTimeout;
restRequest.ReadWriteTimeout = -1;
restClient.Timeout = -1;
restClient.ReadWriteTimeout = -1;
restRequest.Method = Method.POST;
restRequest.AddHeader("Content-Type", "multipart/form-data");
restRequest.AddFile("content", location);
restRequest.AddParameter("DetailLineNumber", "4");
var response = restClient.Execute<List<ActualsDataViewModel>>(restRequest);
Я ожидаю, что мой клиент будет ждать, пока служба завершит обработку. Но клиент не ждет, и объект ответа пуст, означает, что код состояния равен 0. И response.Data имеет значение null.
Если я запускаю ту же службу API REST на локальном хосте и заменяю приведенный ниже код в клиенте, то он работает отлично.
RestClient restClient = new RestClient("http://localhost:5100");
Почему, если на сервере (IIS) работает одна и та же служба, клиент не ожидает ответа?