隐藏 Azure Blob 网址

Ber*_*ern 4 blob

我在公共 Azure blob 容器中存储了大量文件,所有这些文件都通过我的 ASP.NET MVC Web 应用程序中的 HTML 直接引用。作为示例,Blob 存储中的其中一张图像的路径如下所示:

//<my-storage-account-name>.blob.core.windows.net/public/logo.png
Run Code Online (Sandbox Code Playgroud)

我想避免在 HTML 源代码中显示我的存储帐户名称,而不是:

<img src="//<my-storage-account-name>.blob.core.windows.net/public/logo.png"/> 
Run Code Online (Sandbox Code Playgroud)

我更喜欢用这个:

<img src="/images/logo.png"/> 
Run Code Online (Sandbox Code Playgroud)

我想避免设置 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>
Run Code Online (Sandbox Code Playgroud)

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

Ber*_*ern 5

我找到了一个 Microsoft 动手实验室,他们推荐 web.config URL 重写规则选项:

动手实验室:可维护的 Azure 网站:管理变更和规模(2014 年 7 月 16 日)

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

<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>
Run Code Online (Sandbox Code Playgroud)

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