【发布时间】:2018-02-17 11:55:39
【问题描述】:
我们遇到了一个问题,即 Outlook 行为异常,因为它试图读取我们域上的 autodiscover.xml,特别是 https://example.com/autodiscover/autodiscover.xml。
电子邮件主机说我们应该配置网站防火墙以返回超时错误。但是,该站点托管在 Azure 上,我没有看到任何选项。
因此,我想知道这是否可以在 MVC 中完成?我尝试了以下方法:
public class AutoDiscoverController : Controller
{
[Route("autodiscover/autodiscover.xml")]
public ActionResult Index()
{
return new HttpStatusCodeResult(HttpStatusCode.RequestTimeout);
}
}
...但它不起作用;我看到的是 404 页面。方法上的断点也永远不会被命中。
是否可以创建一个模仿不存在文件的路由来返回超时错误?
重复问题更新
Dots in URL causes 404 with ASP.NET mvc and IIS 也有类似的问题。但是,这个问题的不同之处在于:
- 答案在 MVC5 中不起作用
- 我无法创建规则来识别 URL 中的尾部斜杠,因为 Outlook 正在生成 URL,而我无法控制它
我还尝试了什么...
-
在 RouteConfig 中,我定义了一个自定义路由。它不起作用;路线永远不会被击中。
routes.MapRoute( name: "AutoDiscover", url: "autodiscover/autodiscover.xml", defaults: new { controller = "AutoDiscover", action = "Index" }); 同上,但使用
url: "autodiscover/*"routes.IgnoreRoute("autodiscover.xml");在控制器本身上定义一个Route属性,然后启用
routes.MapMvcAttributeRoutes();
【问题讨论】:
-
你能把你的交换服务器的IP列入黑名单吗?
-
@NightOwl888 没问题,谢谢。我完成了那个答案并在上面提供了更新
-
@EvilDr 您正在使用属性路由,但我没有看到任何迹象表明您启用了它
routes.MapMvcAttributeRoutes();。确保它在基于约定的路由之前注册。 -
@Nkosi 谢谢。我添加了它,但路由/控制器仍然没有被命中
标签: asp.net-mvc asp.net-mvc-5 routes