将所有文件请求路由到用于提供PDF的简单文件夹名称

时间:2016-08-18 17:29:19

标签: asp.net webforms url-routing

我想为文件夹中的所有文件创建一个小URL。所以不要写:

http://mywebsite.com/content/pdf/samples/Myfile.pdf

我可以写:

http://MyWebsite.com/samples/myfile.pdf

我添加了

routes.MapPageRoute("Sample", "Sample/{*fullpath}", "~/Content/pdf/samples/{*fullpath}", False)

似乎确实重定向,但我得到没有为扩展程序注册的构建提供程序' .pdf' 。但是,当我将ASPX文件放在文件夹中并导航到它时,它工作正常。那么,我补充说:

<add extension=".pdf" type="System.Web.Compilation.PageBuildProvider" />

现在这给了我一个解析器错误,因为页面充斥着乱码。 图像也是如此。

我问的是不可行的?似乎应该有一种方法让它理解服务或下载页面,就像没有路由一样。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

嗯,我发现了一些有效的东西,虽然我不知道它的效率和效果如何。 我保持

routes.MapPageRoute("Sample", "Sample/{*fullpath}", "~/Content/pdf/samples/{*fullpath}", False)

然后我将以下内容添加到Web.Config。

<system.webServer>

    <rewrite>
      <rules>           
        <rule name="Redirect PDFs" stopProcessing="true">
          <match url="^sample/?(.*)$" />
          <action type="Redirect" url="/Content/SampleReports/{R:1}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>

</system.webServer>

我仍然想知道是否有更好,更快或更简单的方法来做到这一点。此外,这适用于PDF文件。我假设我需要为我希望从示例目录中提供的每种类型的静态文件制定规则。