代码之家  ›  专栏  ›  技术社区  ›  Thomas

没有参数和路由内的点的Http路由

  •  0
  • Thomas  · 技术社区  · 6 年前

    我目前正在使用ApiController类创建一个webservice。由于一些限制,我不得不在路线上加一个点(终端.日志). 并将其用作基本URL。因此:

    http://localhost:59684/terminal.journalentry
    

    当我将以下代码用于此调用时: http://localhost:59684/terminal.journalentry

    public class JournalController : ApiController
    {
            [HttpGet]
            [Route("terminal.journalentry/{id}")]
            public void WriteJournalEntry(int id)
            {
    
            }
    }
    

    虽然我需要使用不涉及任何参数的方法。但当我尝试以下方法时:

    public class JournalController : ApiController
    {
            [HttpGet]
            [Route("terminal.journalentry")]
            public void WriteJournalEntry()
            {
    
            }
    }
    

    电话是: http://localhost:59684/终端.日志 我得到:

    HTTP错误404.0-未找到

    现在我的问题是:有什么不对的地方,需要做些什么才能使用上面的URL而不出错?

    编辑,因为它被问到的内容是什么路由.config是:

    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
    

    WebApiConfig.cs网站在寄存器中只有以下内容: config.MapHttpAttributeRoutes();

    1 回复  |  直到 6 年前
        1
  •  1
  •   Craig H    6 年前

    我认为您需要配置一个处理程序来忽略“.journalentry”。
    通常,任何带有句号的内容都被视为文件,我想这是在这里发生的。

    在web.config文件对于API,请尝试查找以下部分:
    <system.webServer>
    <handlers>

    <add name="JournalEntryExtensionHandler" path="*.journalentry*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    

    您可能需要对路径通配符设置进行一些调整。
    当我做了这个之前的网址 结束了 例如,路径是“*.jpg”。