2016-05-18 11 views
0

Mein Stapel ist ASP.NET (Nancy) mit Razor-View-Engine. Aber das kann alle Technologien betreffen, die ich vermute.
Ich habe zwei LAN-Netzwerke (nennen wir sie großes Netzwerk und kleines Netzwerk) und zwei Server (a.k.a Hauptserver und Image-Server). Der Hauptserver kann von Computern aus beiden Netzwerken erreicht werden, der Image-Server ist jedoch nur für Computer in Small network sichtbar. Ich habe Website von Main-Server bedient, die Bilder von entfernten (Bild) Server zeigt:Lade Bild von Remote-Server in verschiedenen LAN

<img src="http://ImageServer/image.png"/> 

Alles ist in Ordnung, wenn der Computer von Small-Netzwerk ist die Webseite von der Main-Server geladen, da sie Zugriff auf Image-Server hat zu (die gleiche Netzwerk). Problem tritt auf, wenn der Computer aus dem großen Netzwerk die Webseite lädt. Das Image wird nicht geladen, da sich der Image-Server in einem kleinen Netzwerk befindet, auf das Maschinen aus dem großen LAN nicht zugreifen können.
Gibt es eine Möglichkeit, den Hauptserver zu zwingen, das Bild direkt zu liefern?

Antwort

0

Ich weiß nicht, warum ich this nicht finden konnte, bevor ich meine Frage posten konnte. Der einfachste Ansatz scheint eine ordnungsgemäße Router-Konfiguration zu sein. Aber ... eine Änderung der Routerkonfiguration ist in meiner Situation nicht möglich. Zu wissen, dass ich mein eigenes Gehirn gegründet habe;). Meine Lösung wandelt das Bild in base64 String zuerst mit den folgenden C# Code-Schnipsel:

private string convertToBase64(string imageURL) 
    { 
     var request = WebRequest.Create(imageURL); 

     using (var response = request.GetResponse()) 
     { 
      using (var stream = response.GetResponseStream()) 
      { 
       using (Image image = Image.FromStream(stream)) 
       { 
        using (MemoryStream m = new MemoryStream()) 
        { 
         image.Save(m, image.RawFormat); 
         byte[] imageBytes = m.ToArray(); 
         string base64String = Convert.ToBase64String(imageBytes); 
         return string.Format("data:image/png;base64,{0}", base64String); 
        } 
       } 
      } 
     } 
    } 

Es ist alles auf der Serverseite geschieht so keine Probleme mit Zugriff auf die Bild.
Dann bin ich vorbei die Zeichenfolge in die Ansicht über Modell-Eigenschaft und die Bildanzeige wie folgt:

<img id="photo" src="@Model.Base64Image" title="@Model.Description" /> 

Wahrscheinlich diese Lösung ist es Fehler hat, aber es funktioniert für mich, und ich konnte nichts anderes finden das könnte ich in diesem Fall verwenden.