gpt4 book ai didi

asp.net-mvc - 基于域的 MVC 服务图标

转载 作者:行者123 更新时间:2023-12-01 13:46:34 24 4
gpt4 key购买 nike

现在我有一个将在多个域上发布的 Web 应用程序,我想支持基于域的不同图标

我所做的是:

** 在 web.config 中添加了一个名为“favicon”的处理程序,用于对名为“favicon.ico”的文件的任何请求

<system.webServer>
<handlers>
<add name="favicon" verb="*" path="favicon.ico" type="namespace.FaviconHandler, MyApplication" />
// other handlers
</handlers>
</system.webServer>

** 然后添加支持 IHttpHandler 接口(interface)的类

public class FaviconHandler : IHttpHandler
{
public void ProcessRequest(System.Web.HttpContext ctx)
{
string path = getFavIconPath(ctx.Request.Url.Host.ToLower());
string contentType = "image/x-icon";
path = ctx.Server.MapPath(path);

if (!File.Exists(path))
{
ctx.Response.StatusCode = 404;
ctx.Response.StatusDescription = "File not found";
}
else
{
ctx.Response.StatusCode = 200;
ctx.Response.ContentType = contentType;
ctx.Response.WriteFile(path);
}
}
private string getFavIconPath(string domain)
{

if (!string.IsNullOrEmpty(domain))
{

if (domain.Contains("abc.com")))
return "favicon.ico";
else
return "favicon2.ico";
}
return "favicon.ico";
}
}

问题是..它不能正常工作..我想念什么??提前致谢

最佳答案

另一种方法是保留所有以域名命名的图标文件,例如 -

images
- abc.com.ico
- def.com.ico

创建一个 basecontroller 并在其 OnActionExecuting 中使用主机名设置 ViewBag 属性(覆盖它)-

public override void OnActionExecuting(ActionExecutingContext ctx)
{
base.OnActionExecuting(ctx);
string host = HttpContext.Request.Host.Value;
ViewBag.Host = host;
}

然后在您的主布局中设置网站图标链接,如 -

<link rel="icon" href="~/images/@(ViewBag.Host).ico"/>  

关于asp.net-mvc - 基于域的 MVC 服务图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35572660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com