没有参数的 Http 路由和路由内的一个点
Http route without parameters and a point inside the route
我目前正在使用 ApiController 类 创建网络服务。由于某些限制,我必须在路线本身中放置一个点 (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 Error 404.0 - Not Found
现在我的问题是:那里有什么问题以及需要做什么才能使用上述 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在Register中只有以下内容:config.MapHttpAttributeRoutes();
我认为您需要配置一个处理程序来忽略“.journalentry”。
通常任何带有句号的东西都被认为是一个文件,我想这是在这里发生的。
在您的 API 的 web.config 中,尝试找到以下部分:
<system.webServer>
<handlers>
并添加处理程序定义:
<add name="JournalEntryExtensionHandler" path="*.journalentry*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
您可能需要尝试一下路径通配符设置。
当我之前完成此操作时,URL 以文件名结尾 因此路径为“*.jpg”,例如。
我目前正在使用 ApiController 类 创建网络服务。由于某些限制,我必须在路线本身中放置一个点 (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 Error 404.0 - Not Found
现在我的问题是:那里有什么问题以及需要做什么才能使用上述 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在Register中只有以下内容:config.MapHttpAttributeRoutes();
我认为您需要配置一个处理程序来忽略“.journalentry”。
通常任何带有句号的东西都被认为是一个文件,我想这是在这里发生的。
在您的 API 的 web.config 中,尝试找到以下部分:
<system.webServer>
<handlers>
并添加处理程序定义:
<add name="JournalEntryExtensionHandler" path="*.journalentry*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
您可能需要尝试一下路径通配符设置。
当我之前完成此操作时,URL 以文件名结尾 因此路径为“*.jpg”,例如。