我想为文件夹中的所有文件创建一个小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" />
现在这给了我一个解析器错误,因为页面充斥着乱码。 图像也是如此。
我问的是不可行的?似乎应该有一种方法让它理解服务或下载页面,就像没有路由一样。
有更好的方法吗?
答案 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文件。我假设我需要为我希望从示例目录中提供的每种类型的静态文件制定规则。