2015-10-13 5 views
0

Я пытаюсь использовать некоторые WebAPI Я создал для загрузки некоторых файлов. У меня есть 3 метода на контроллере, которые используются в этом процессе. Два метода работают нормально, но третий метод, который фактически обрабатывает файлы, возвращает 404 Error Not Found каждый раз, когда я делаю ему веб-запрос.C# WebRequest 404 Ошибка в POST

Controller Код:

[HttpPost] 
    public bool UploadAgentStatement(DateTime periodStart, DateTime periodEnd, string agentNumber, string excelFileBase64, string pdfFileBase64, string carrierCode) 
    { 
     var excelFile = Convert.FromBase64String(excelFileBase64); 
     var pdfFile = Convert.FromBase64String(pdfFileBase64); 
     var success = _apiUnitOfWork.UploadStatement(periodStart, periodEnd, agentNumber, excelFile, pdfFile, carrierCode); 

     return success; 
    } 

WebRequest Код сниппета:

 request.Method = "POST"; 
     request.ContentType = !String.IsNullOrEmpty(jsonData) ? "application/json" : ""; 

     try 
     { 
      if (!String.IsNullOrEmpty(jsonData)) 
      { 
       using (var sw = new StreamWriter(request.GetRequestStream())) 
       { 
        sw.Write(jsonData); 
        sw.Flush(); 
        sw.Close(); 
       } 
      } 

      using (var resp = request.GetResponse()) 
      { 
       using (var reader = new StreamReader(resp.GetResponseStream())) 
       { 
        response = Convert.ToBoolean(reader.ReadToEnd()); 
       } 
      } 
     } 

И JSON:

jsonData = { 
    "periodStart": "09-14-2015", 
    "periodEnd": "10-15-2015", 
    "agentNumber": "1ASDF", 
    "excelFileBase64": " ", 
    "pdfFileBase64": " ", 
    "carrierCode": "MEH" 
} 

Каждый раз, когда я пытаюсь запрос я получаю 404 ошибки не найден. Я бы ожидать, что она, по крайней мере ударил метод на контроллере, но даже в POSTMAN я получаю ошибку:

{ "Message": "No HTTP resource was found that matches the request URI ' http://localhost:58342/Api/StatementSvc/UploadAgentStatement '.", "MessageDetail": "No action was found on the controller 'StatementSvc' that matches the request." }

Что я здесь отсутствует? Нужно ли что-то еще в заголовке?

ответ

2

Изменить код:

public class Dto 
    { 
     public DateTime PeriodStart { get; set; } 
     public DateTime PeriodEnd { get; set; } 
     public string AgentNumber { get; set; } 
     public string ExcelFileBase64 { get; set; } 
     public string PdfFileBase64 { get; set; } 
     public string CarrierCode { get; set; } 
    } 

    [HttpPost] 
    public bool UploadAgentStatement(Dto dto) 
    { 
     var excelFile = Convert.FromBase64String(dto.ExcelFileBase64); 
     var pdfFile = Convert.FromBase64String(dto.PdfFileBase64); 
     var success = _apiUnitOfWork.UploadStatement(dto.PeriodStart, dto.PeriodEnd, dto.AgentNumber, excelFile, pdfFile, dto.CarrierCode); 

     return success; 
    } 
+0

Ну, что сделал трюк, конечно. Это то, что я получаю за то, что делаю торопясь. – Encryption