ASP.NET:动态更改静态资产的链接

时间:2009-07-07 21:07:16

标签: asp.net rewrite assets

我们正在构建一个内部静态资产服务器。每个环境(dev,staging,prod)都有自己的资产服务器,资产是整个Web应用程序的引用(html,aspx,ascx,css,javascript等......)

要在正确的环境中引用正确的资产服务器,一种解决方案是编写一个http模块来拦截响应,然后才能到达客户端并根据需要更改URL。我只是认为这可能不是最具扩展性的解决方案,因为这个http模块将针对每个请求执行,并且在客户端获取之前基本上解析整个响应(有些是巨大的)。

我也在考虑使用客户端javascript来更改客户端的引用,但这可能不适用于http模块。

有什么想法? ASP.NET中的行业最佳实践是什么?

2 个答案:

答案 0 :(得分:2)

我可能会创建自己的LinkToStaticAsset控件。它只接受相对于每个资产的静态资产服务器的路径。我希望它通过包含配置的基本路径来生成完整的URL。

答案 1 :(得分:1)

如果您希望您的网站在没有Javascript依赖关系的情况下运行(即使只是部分),那么您应该保留此服务器端。

上面提到的另一种方法是在应用程序级别执行此操作,即使用库方法生成静态资产URL并配置为通过web.config指向特定服务器。 / p>


它会是这样的: -

(在您的App_Code文件夹或引用的程序集中)

public static class Util
{
    public static string AssetUrl(string relativePath)
    {
        // returns asset server address from web config with relative path appended
    }
}

(在web.config中)

<appSettings>
    <add key="AssetServerBaseUrl" value="http://foo.bar" />
    ...
</appSettings>

(在您的aspx文件中)

<img src='<%= Util.AssetUrl("img/myimage.jpg") %>' ... />