aspx,response.write,图像和链接引用

时间:2012-02-16 16:11:05

标签: asp.net

我花了一段时间试图找出我想要的是否可能。

我在不同的域名上有3个网站。两个是英文,一个是法文。我们有一个英文页面,一个法文页面,除了文本之外是相同的。这些页面和相关图像(我们称之为常见内容)存储在单独的域(超出我的控制范围的原因),并使用response-writefile将内容插入到两个英文页面中。

一切正常。然而,这些公共页面中的图像具有相对于存储它们的域的路径,这意味着当页面被写入主页面时,图像不显示。我理解为什么并且可以通过放入图像的完整路径来绕过它。

我不想通过改变图像路径的每一页,是否有任何方式让服务器知道或被告知图像是相对于公共内容而不是渲染页面?

我不会这么想,但如果有的话,这会节省我的一天!

进一步说明:

图像的相对路径:

abc.png

公共内容文件的路径:

http://domain1.com/CommonContent/123.html

最终页面中的代码(domain2.com/english.html):

<% Response.WriteFile("/CommonContent/123.html"); %>

渲染图像的路径(我不想要的):

http://domain2.com/abd.png

渲染页面中图像的理想路径:即我想要发生的事情:

http://domain1.com/CommonContent/abd.png

2 个答案:

答案 0 :(得分:0)

您可以使用WebClient类来获取页面内容

String URI = "http://domain1.com/CommonContent/123.html";

WebClient webClient = new WebClient();
Stream stream = webClient.OpenRead(URI);
String request = reader.ReadToEnd();

然后你执行一个字符串替换,这里我不确定什么可以匹配,也许这样的东西可以匹配:

request.Replace("<src=", "<src=http://domain1.com/CommonContent/") 

然后将此字符串呈现给浏览器。

答案 1 :(得分:0)

您可以让Application Settings在每个应用程序上拥有每个域的路径,然后可以添加一个功能,该功能将负责编写图片的完整路径。此外,您可以HTTP Module解决此问题以及Generic Handler,它将接收所有图片请求并从不同的域/应用程序加载它们。

祝你好运!