如何解决匹配单个特定 url 的自定义路由
在我的 mvc 应用程序中,我想动态生成一个特定的 url :
https://myapp.corp.com/.well-kNown/microsoft-identity-association.json
此端点应根据 web.config 文件中的值生成一个小文件。所以我创建了这个控制器:
public class HostingController : Controller
{
// GET: Hosting
[OutputCache(Duration = 100,varyByParam = "none")]
public ActionResult MicrosoftIdentityAssociation() => Json(new
{
associatedApplications = new[]
{
new { applicationId = WebConfigurationManager.AppSettings.Get("ClientId") }
}
});
}
我改变了这样的路由配置:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Azure domain registration",".well-kNown/microsoft-identity-association.json",new { controller = "Hosting",action= "MicrosoftIdentityAssociation" }
);
routes.MapRoute(
name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home",action = "Index",id = UrlParameter.Optional }
);
}
我希望 url 生成 json,如:
{
"associatedApplications": [
{
"applicationId": "1562019d-44f7-4a9d-9833-64333f52181d"
}
]
}
但是当我定位到 url 时,我收到了 404 错误。
怎么了?如何修复?
解决方法
您可以使用路由属性:
[Route("~/.well-known/microsoft-identity-association.json")]
[OutputCache(Duration = 100,VaryByParam = "none")]
public ActionResult MicrosoftIdentityAssociation()
{
..... your code
}
它在邮递员中进行了测试。
,Asp.Net MVC 无法创建具有扩展名的路由。我不得不编辑我的 Web.config 以将 MVC 框架插入到这个非常具体的文件中。
特别是:
<system.webServer>
<handlers>
<add name="Azure domain verifier"
path=".well-known/microsoft-identity-association.json"
verb="GET" type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0"
/>
</handlers>
</system.webServer>
从现在开始,我可以使用 routeconfig.cs 文件或 [RouteAttribute] 路由到我的自定义控制器操作
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。