第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用ASP.NET路由來提供靜態(tài)文件

使用ASP.NET路由來提供靜態(tài)文件

回首憶惘然 2019-10-08 15:07:05
可以使用ASP.Net路由(不是MVC)來提供靜態(tài)文件嗎?說我要路線http://domain.tld/static/picture.jpg至http://domain.tld/a/b/c/picture.jpg而且我想動態(tài)地執(zhí)行它,因為重寫的URL是動態(tài)計算的。我不能一勞永逸地建立靜態(tài)路由。無論如何,我可以這樣創(chuàng)建一條路線:routes.Add(  "StaticRoute", new Route("static/{file}", new FileRouteHandler()));在該FileRouteHandler.ProcessRequest方法中,我可以重寫從/static/picture.jpg到的路徑/a/b/c/picture.jpg。然后,我想為靜態(tài)文件創(chuàng)建一個處理程序。ASP.NET StaticFileHandler為此使用。不幸的是,該類是內(nèi)部的。我試圖使用反射創(chuàng)建處理程序,它實際上可以工作:Assembly assembly = Assembly.GetAssembly(typeof(IHttpHandler));Type staticFileHandlerType = assembly.GetType("System.Web.StaticFileHandler");ConstructorInfo constructorInfo = staticFileHandlerType.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);return (IHttpHandler) constructorInfo.Invoke(null);但是使用內(nèi)部類型似乎不是正確的解決方案。另一個選擇是實現(xiàn)自己的實現(xiàn)StaticFileHandler,但是正確地做到這一點(支持諸如范圍和etags之類的HTTP東西)并非易事。如何在ASP.NET中處理靜態(tài)文件的路由?
查看完整描述

3 回答

?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗 獲得超4個贊

在研究了這個問題幾個小時之后,我發(fā)現(xiàn)僅添加忽略規(guī)則將為您的靜態(tài)文件提供服務(wù)。


在RegisterRoutes(RouteCollection路由)中,添加以下忽略規(guī)則:


routes.IgnoreRoute("{file}.js");

routes.IgnoreRoute("{file}.html");


查看完整回答
反對 回復(fù) 2019-10-08
?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗 獲得超5個贊

為什么不使用IIS來做到這一點?您可以創(chuàng)建重定向規(guī)則,以將從第一個路由到第二個路由的所有請求指向該請求,甚至可以將其到達(dá)您的應(yīng)用程序。因此,這將是重定向請求的更快方法。


假設(shè)您擁有IIS7 +,則可以執(zhí)行以下操作:


<rule name="Redirect Static Images" stopProcessing="true">

  <match url="^static/?(.*)$" />

  <action type="Redirect" url="/a/b/c/{R:1}" redirectType="Permanent" />

</rule>

或者,如果您不需要重定向,如@ ni5ni6所示:


<rule name="Rewrite Static Images" stopProcessing="true">

  <match url="^static/?(.*)$" />

  <action type="Rewrite" url="/a/b/c/{R:1}" />

</rule>

為@RyanDawkins編輯2015-06-17:


而且,如果您想知道重寫規(guī)則的去向,這里是其在web.config文件中位置的映射。


<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <system.webServer>

    <rewrite>

      <rules>

        <!-- rules go below -->

        <rule name="Redirect Static Images" stopProcessing="true">

          <match url="^static/?(.*)$" />

          <action type="Redirect" url="/a/b/c/{R:1}" redirectType="Permanent" />

        </rule>

      </rules>

    </rewrite>

  </system.webServer>

</configuration>


查看完整回答
反對 回復(fù) 2019-10-08
?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊

我有類似的問題。我最終使用了HttpContext.RewritePath:


public class MyApplication : HttpApplication

{

    private readonly Regex r = new Regex("^/static/(.*)$", RegexOptions.IgnoreCase);


    public override void Init()

    {

        BeginRequest += OnBeginRequest;

    }


    protected void OnBeginRequest(object sender, EventArgs e)

    {

        var match = r.Match(Request.Url.AbsolutePath);

        if (match.Success)

        {

            var fileName = match.Groups[1].Value;

            Context.RewritePath(string.Format("/a/b/c/{0}", fileName));

        }

    }

}


查看完整回答
反對 回復(fù) 2019-10-08
  • 3 回答
  • 0 關(guān)注
  • 623 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號