我当前正在使用ApiController类创建一个Web服务。由于某些限制,我必须在路线本身中放置一个Point(terminal.journalentry)。并将其用作基本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/terminal.journalentry 我得到:
HTTP错误404.0-找不到
现在我的问题是:那里出了什么问题?为了使用上面的URL而不遇到错误,需要做什么?
根据询问的内容编辑Routes.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();
答案 0 :(得分:0)
我认为您需要配置一个处理程序以忽略“ .journalentry”。
通常,任何带有句号的东西都被认为是文件,我想这是在发生这种情况。
在您API的web.config中,尝试找到以下部分:
<system.webServer>
<handlers>
并添加处理程序定义:
<add name="JournalEntryExtensionHandler" path="*.journalentry*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
您可能需要对路径通配符设置进行一些尝试。
当我之前完成此操作时,URL 以结尾并带有文件名,因此路径例如是“ * .jpg”。