2016-05-18 3 views
0

私のスタックは、Razorビューエンジンを搭載したASP.NET(Nancy)です。しかし、これは私が想定しているすべての技術に関係するかもしれません。
私は2つのLANネットワーク(大規模ネットワークと小規模ネットワークと呼ぶ)と2つのサーバー(メインサーバーとイメージサーバー)を持っています。メインサーバーには両方のネットワークのコンピュータからアクセスできますが、イメージサーバーはスモールネットワークのコンピュータでのみ表示されます。私は、リモート(イメージ)サーバーから画像を示し、メインサーバーが提供するウェブサイトを持っている:別のLANにあるリモートサーバーから画像をロードする

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

それはあまりにもイメージ・サーバーへのアクセス権を持っているような小さなネットワークからコンピュータがメインサーバからWebページをロードしているときは、すべての罰金です(同じネットワーク)。大きなネットワークのコンピュータがWebページを読み込むと、問題が発生します。 Image ServerがLarge LANのマシンからアクセスできないSmallネットワークにあるため、イメージがロードされていません。
メインサーバーに画像を直接配信する方法はありますか?

答えて

0

質問を投稿する前にthisが見つかりませんでした理由がわかりません。最も簡単なアプローチは、適切なルータ構成であるようです。しかし...私の状況ではルータの設定を変更することはできません。最終的に自分の脳を始めたことをすべて知っている;)。 私のソリューションは、次のC#スニペットと最初のbase64文字列に画像を変換されます。

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); 
        } 
       } 
      } 
     } 
    } 

それはすべてサーバ側で画像にアクセスできるので、何の問題が起こっていないです。
それから私は、モデルのプロパティを介して、ビューに文字列を渡すと、次のように画像を表示しています:

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

おそらくこの解決策は、それが欠陥だが、それは私のために動作し、私は何かを見つけることができませんでしたあり私はこの場合に使用することができます。

関連する問題