Ich habe ein sehr einfaches Web-API-Beispiel, das ich mit Beispielcode aus dieser Anleitung :
und es nutzt ITSurveyEntities
, das ein generiertes ADO.NET-Entitätsdatenmodell aus der Datenbank war, das momentan nur eine einzelne Tabelle enthält, Survey
.
Kurz gesagt, ich glaube nicht, dass ich hier etwas Besonderes versuche.
Wenn ich versuche, mit etwas wie http://localhost:1681/api/surveys
zur API zu navigieren, erhalte ich eine Antwort, aber die Datei heißt surveys
ohne Erweiterung. Weiter, wenn ich versuche Save As
und sage es eine txt
Erweiterung, schlägt der Download einfach fehl.
Ich würde erwarten, dass die API den Dateinamen surveys.json
zurückgibt, wie das Beispielprojekt mit products
, und der Browser würde mich bitten, die Datei zu öffnen oder zu speichern.
Ich habe die Web.config
-Dateien zwischen meinem Projekt und dem Beispielcode aus dem funktionierenden Tutorial verglichen.
Ich habe die Routing-Konfiguration zwischen meinem Projekt und dem Beispielcode aus dem funktionierenden Tutorial verglichen.
Ich habe versucht, WebDav auszuschließen, da meine Suche darauf hindeutet, dass dies der Grund sein könnte. Ich habe das getan, indem ich die Web.config in einer Weise geändert habe, die Was ist in diesem Blog .
Okay, nach der Anleitung von Joe Enos stellte ich fest, dass das View-Modell auch den Namen Survey
hatte und daher einen Fehler bezüglich der Mehrdeutigkeit zwischen dem CLR-Typ und dem EDM-Typ verursachte.
Ich habe das gelöst, indem ich das View-Modell in SurveyViewModel
umbenannt habe, und die Anfrage an http://localhost:1681/api/surveys
gibt nun HTTP 200
zurück und lädt die Datei wie erwartet herunter.
Der Antworttyp (xml, json usw.) wird durch den accept-Header in Ihrer Anfrage bestimmt. Sie haben nicht erwähnt, welchen Browser Sie verwendet haben, um den Dienst anzurufen, aber ich glaube, es gibt Unterschiede im Standardannahmekopf zwischen Browsern. Wenn Sie nur Json-Daten von Webapi zurückgeben möchten, fügen Sie dem Global.Asax Folgendes hinzu:
%Vor%Media Formatters sind im Wesentlichen, wie die Daten aus der Webapi-Methode für den Browser serialisiert werden.
Tags und Links asp.net-mvc asp.net-web-api .net c#