我正在研究ASPNETMVC4和WebApi。移动设备将使用webapi方法。我们需要保护服务,我们正在使用的是以某种特定方式加密数据。现在,我需要在到达Controller之前解密调用。如果解密的信息有效,它应该像往常一样继续到Controller,如果不是,我会将用户路由到一些错误方法。要实现这一点,我认为最好的办法是自定义HttpHandler和自定义RouteHandler。我正在学习教程herepublicclassMvcSecurityRouteHandler:IRouteHandler{publicSystem.Web.IHttpHandlerGetHttpHandler
我有一个使用Kestrel作为服务器的ASP.NETMVCCore项目。它既提供用户内容(asp.netmvc)又托管代理(软件)与之通信的WebAPIController。我启用了HTTPS和客户端证书支持。问题是我想为调用WebAPI的代理(软件)要求客户端证书,但我不想为基于浏览器的常规用户要求/提示客户端证书。我已通过以下方式启用HTTPS/客户端证书支持:varhost=newWebHostBuilder().UseKestrel(options=>{HttpsConnectionFilterOptionshttpsoptions=newHttpsConnectionFilt
我有一个自定义委托(delegate)处理程序来管理请求的身份验证。在我的一个Controller中,不应为特定操作启用身份验证。如何禁用方法和路由的委托(delegate)处理程序POSTapi/MyController?一种选择是在处理程序中对路由进行硬编码,但是,我宁愿将此逻辑保留在处理程序之外。此外,我看到自己将此行为添加到更多操作中,这会使此方法难以维护。protectedoverrideSystem.Threading.Tasks.TaskSendAsync(HttpRequestMessagerequest,System.Threading.CancellationTok
我正在尝试使用System.Web.Routing实现ASP.NETURL路由。这似乎在我的本地主机上工作正常但是当我上线时我收到IIS7的404错误(找不到文件)。仅供引用,托管使用WindowsServer2008IIS7。我认为这在处理路由机制方面有所不同。但我无法弄清楚到底发生了什么。以下是我到目前为止为使其正常工作所做的设置和更改,并为我自己提供一些荣誉,它在本地工作得非常好。Web.Config设置然后我有一个具有以下标记的system.webserver部分然后在Application_Start部分我定义了一个路由如下:voidApplication_Start(obj
在给定System.Web.Routing.RouteData的情况下,如何获取将要调用的Controller操作(方法)和Controller类型?我的场景是这样的-我希望能够在OnActionExecuting方法中执行(或不执行)某个操作的某些操作。但是,我经常想知道的不是当前操作,而是被调用的“根”操作;我的意思是我可能有一个名为“登录”的View,这是我的登录页面。此View可能包括另一个局部View“LeftNav”。当为LeftNav调用OnActionExecuting时,我希望能够确定它确实是为Login的“根”aciton调用的。我意识到通过调用RouteTable
我正在尝试同时实现AttributeRouting和来自RoutingConstaintsSample的VersionedRoute但是当我在Controller上同时使用两者时,versioned属性不再有效。我需要对属性进行哪些修改才能使其与属性路由配合使用?对于代码示例,请下载示例项目(或者只查看上面链接中的几个文件),然后这样修改路由://WhenIusetheRoutePrefix,VersionedRoutenolongerworks(Sending"Api-Version"throughhttpheaderdoesn'troutecorrectly//IfIremovet
我在我的WebApiKatana应用程序中使用路由。我有以下两个工作正常的路由映射。我的问题是,我可以使用可选参数将它们组合成一个路由映射吗?我看不到一个明显的方法来做到这一点并保持所需的功能。我对此并不陌生,可能错过了一种可以帮助我实现这一目标的技术。如果路线必须保持这种状态,那么这不是问题。config.Routes.MapHttpRoute(name:"UnRegister",routeTemplate:"api/services/{serviceName}/{location}",defaults:new{controller="MyController",location=R
我正在寻找有关使用C#在MVC中进行路由的信息。我目前非常了解MVC中路由的基础知识,但我正在寻找的东西有点难以找到。实际上,我想找到一种定义采用单个参数的单个路由的方法。我在网上找的常见例子都是围绕着例子routes.MapRoute("Default","{controller}.mvc/{action}/{id}"new{controller="Default",action="Index",id=""});通过映射这个路由,你可以映射到任何Controller中的任何Action,但是如果你想将任何东西传递给Action,方法参数必须称为“id”。如果可能的话,我想找到解决这个
如果我有这样一条路线:routes.Add(newRoute("{controller}/{page}",newRouteValueDictionary{{"page",UrlParameter.Optional}},newRouteValueDictionary{{"page",@"[Pp]age\d+"}},newMvcRouteHandler()));然后当{page}丢失时路由不匹配,但是如果我删除约束它匹配。这是错误还是功能? 最佳答案 我在正则表达式中使用^$|,例如:(^$|[Pp]age\d+)。我在搜索此问题的答案
我想忽略多个通配符路由。在asp.netmvcpreview4中,它们附带:RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");我还想添加如下内容:RouteTable.Routes.IgnoreRoute("Content/{*pathInfo}");但这似乎破坏了一些在我的程序中生成url的助手。想法? 最佳答案 这里有两种可能的解决方案。向忽略路由添加约束以确保只有应忽略的请求才会匹配该路由。有点笨拙,但应该可以。RouteTable.Routes.Ignor