2017-05-03 6 views
0

J'utilise HttpHandler dans mon projet Asp.Net MVC. J'ai un autre projet d'API MVC qui renvoie l'image en réponse. En utilisant HttpWebRequest je suis capable d'appeler l'API, il n'y a pas d'erreur dans le code mais je ne peux pas voir l'image dans la page.Obtenir l'image en réponse à HttpWebRequest dans HttpHandler

Mon code:

HttpHandler Code:

var currentResponse = HttpContext.Current.Response; 

string URL = "http://localhost:50417/API/GetThumbnail"; 
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); 
        request.KeepAlive = false; 
        request.ProtocolVersion = HttpVersion.Version10; 
        request.Method = "GET"; 
        request.Timeout = 30000; 
        HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

        StreamReader streamr = new StreamReader(response.GetResponseStream()); 


        currentResponse.Write(streamr.ReadToEnd()); 

RouteConfig.cs

routes.Add(new Route("Thumbnail/getImage", new ThumbnailImageRouteHandler())); 

Index.cshtml

<img src="/Thumbnail/getImage" /> 
+0

Avez-vous essayé de spécifier le type de contenu? Pouvez-vous télécharger/afficher l'image si vous ouvrez l'URL dans un navigateur? – Fixation

+0

@Fixation oui je peux télécharger l'image si j'ouvre URL dans le navigateur, aussi j'ai essayé contenttype – Jigarb1992

Répondre

1

Cela fonctionne si vous définissez la ContentType prope rly et copier simplement le flux de réponse à la sortie, comme ceci:

response.GetResponseStream().CopyTo(currentResponse.OutputStream); 
currentResponse.ContentType = response.ContentType; 
+0

Merci mais ne fonctionne pas @Johnny – Jigarb1992

+0

Cela a fonctionné pour moi quand j'ai remplacé les deux dernières lignes dans votre exemple avec ceux ci-dessus. Avez-vous des erreurs dans Visual Studio ou dans la console de votre navigateur Web? –

+0

Opps! Désolé je revérifie encore et le chemin que j'ai donné est faux. Son travail @Johnny Merci :) – Jigarb1992