2016-05-18 20 views
0

我的栈是带有Razor视图引擎的ASP.NET(Nancy)。但是这可能涉及我想的所有技术。
我有两个LAN网络(让我们称之为大型网络和小型网络)和两台服务器(又名主服务器和图像服务器)。主服务器可以通过两台网络中的计算机访问,但只有小型网络中的计算机才可以看到图像服务器。从不同局域网中的远程服务器加载图像

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

一切都在从小型网络计算机加载从主服务器上的网页,因为它可以访问图像服务器太(相同罚款:我的网站通过其中显示了从远程(图)服务器影像的主服务器提供服务网络)。大网络计算机加载网页时发生问题。图像未加载,因为图像服务器处于小型网络中,而大型局域网中的机器无法访问该网络。
有没有办法强制主服务器直接提供图片?

回答

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

这一切都发生在服务器端所以没有问题,能够访问图像。
然后我传递字符串通过Model属性的查看和显示相关图片如下:

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

也许这解决方案它的缺陷,但它为我工作,我找不到别的我可以在这种情况下使用。

相关问题