Sto sperimentando un servizio API Web. Sto cercando di scaricare un file tramite una richiesta GET. Il metodo si accende bene e raggiunge il punto di rottura. Creo una risposta e la restituisco. Quindi, stranamente, il punto di interruzione si ripercuote. Sto usando il poster aggiuntivo di Firefox per testarlo. Il poster dice che non c'è risposta dal server. Qualche idea sul perché stia succedendo?Perché questo metodo dell'API Web viene attivato due volte?
Ecco il codice di creazione di risposta:
HttpResponseMessage result = this.Request.CreateResponse(HttpStatusCode.OK);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentLength = file.Length;
result.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddDays(-1));
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("Attachment") { FileName = file.Name };
return result;
L'unico cambiamento significativo (mi viene in mente) è al mio WebApiConfig in questo modo:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
mia firma del metodo è simile al seguente: public HttpResponseMessage GetUpdate (int Id)
Tutte le altre mie azioni funzionano correttamente. Mi manca qualcosa sul lato client, come un'intestazione di accettazione o qualcosa del genere? Sto solo facendo un semplice GET adesso.
Grazie!
Se provo il metodo e creo solo una risposta OK e lo restituisco, esso restituisce correttamente. Ho un Entity Framework usando block e un FileStream usando il blocco in là. Inizierò a estrarre il codice e vedere se riesco a isolare il problema. –