隐藏Azure Blob Url

隐藏Azure Blob Url,blob,Blob,我有大量文件存储在一个公共Azure blob容器中,所有这些文件都是通过ASP.NET MVC web应用程序中的HTML直接引用的。例如,blob存储中一个映像的路径如下所示: //<my-storage-account-name>.blob.core.windows.net/public/logo.png /.blob.core.windows.net/public/logo.png 我希望避免在HTML源代码中显示我的存储帐户名,而不是: <img src="//&

我有大量文件存储在一个公共Azure blob容器中,所有这些文件都是通过ASP.NET MVC web应用程序中的HTML直接引用的。例如,blob存储中一个映像的路径如下所示:

//<my-storage-account-name>.blob.core.windows.net/public/logo.png
/.blob.core.windows.net/public/logo.png
我希望避免在HTML源代码中显示我的存储帐户名,而不是:

<img src="//<my-storage-account-name>.blob.core.windows.net/public/logo.png"/> 
.blob.core.windows.net/public/logo.png/>
我更喜欢用这个:

<img src="/images/logo.png"/> 

我希望避免设置MVC路由并使用blob API将文件加载到响应流中,因此认为web.config解决方案可能是最简单的解决方案,即

<rule name="Image Redirect" stopProcessing="true">
    <match url="^images/(.*)$" ignoreCase="false" />
    <action type="Redirect" url="//<my-storage-account-name>.blob.core.windows.net/public/{R:1}" redirectType="Permanent" />
</rule>


问题:考虑到任何页面都可能一次加载30多个图像,这是最有效的方法吗?还是我应该只使用公共blob URL,尽管我担心性能提高?

我发现了一个Microsoft Hand-on实验室,他们推荐使用web.config URL重写规则选项:

(2014年7月16日)

(代码片段-WebSitesInProduction-Ex4-UrlRewriteRule)



“注意:URL重写是拦截传入Web请求并将请求重定向到其他资源的过程。URL重写规则告诉重写引擎何时需要重定向请求,以及应该重定向到哪里。重写规则由两个字符串组成:在请求的URL中查找的模式(通常使用正则表达式)和替换模式的字符串(如果找到)。有关更多信息,请参阅ASP.NET中的URL重写。“

这正是我想要的。
<system.webServer>
    <rewrite>
        <rules>
            <rule name="redirect-images" stopProcessing="true">
                <match url="img/(.*)"/>
                <action type="Redirect" url="http://[YOUR-STORAGE-ACCOUNT].blob.core.windows.net/images/{R:1}"></action>
            </rule>
        </rules>
    </rewrite>