【问题标题】:ServiceStack 4: Ignore favicon.ico in Fallback RouteServiceStack 4:忽略后备路由中的 favicon.ico
【发布时间】:2014-05-07 04:01:25
【问题描述】:

我在 ServiceStack.Razor 上构建了一个或多或少的静态网站,其路由定义为以下模式: 我试图忽略 favicon.ico,但将“/”或“/en-us”等路径路由到 HomeScenario。 其他示例路由是 /{Lang}/cook 或 /{Lang}/cheer 等。

不幸的是,我目前的做法并没有忽略 favicon.ico。我想在不编写大量额外代码的情况下实现这一点。

[FallbackRoute("/{Lang*}")]
public class HomeScenario : LocalizedRequest
{

}

public class LocalizedRequest
{
    public LocalizedRequest()
    {
        Lang = "en-us";
    }
    public string Lang { get; set; }
}

这是默认请求

[DefaultView("home")]
public object Get(HomeScenario request)
{
    var cacheKey = GetCacheKey ("home", request.Lang);
    return base.Request.ToOptimizedResultUsingCache (base.Cache, cacheKey, () => {
        var response = LoadJson<HomeScenarioResponse> (request.Lang, "home");
        return response;
    });
}

【问题讨论】:

    标签: routing servicestack favicon ignoreroute


    【解决方案1】:

    你可以忽略代码中的请求:

    [DefaultView("home")]
    public object Get(HomeScenario request)
    {
        if (base.Request.PathInfo == "/favicon.ico")
            return HttpError.NotFound(request.PathInfo);
    
        var cacheKey = GetCacheKey ("home", request.Lang);
        return base.Request.ToOptimizedResultUsingCache (base.Cache, cacheKey, () => {
            var response = LoadJson<HomeScenarioResponse> (request.Lang, "home");
            return response;
        });
    }
    

    否则,您可以在 Request Pipeline 的上方注册一个 CatchAll 处理程序,以处理不需要的请求,例如:

    this.CatchAllHandlers.Add((httpmethod, pathInfo, filepath) => {
    
        if (pathInfo == "/favicon.ico") 
            return new NotFoundHttpHandler();
    
        return null; //continue processing request
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多