我已经在本地主机上启动并运行了一个API应用程序。它在en端点上工作得很好,例如:
http://localhost:26307/api/ModelName/12345但是,在部署到测试服务器后,相同的url必须是:
http://v10test.mydomain.com/api/api/ModelName/12345我正在尝试去掉double /api/。
我从这个调整了我的路由(例如):
config.Routes.MapHttpRoute(
name: "route2",
routeTemplate: "api/{controller}/{organizationSys}"
);到这个.
config.Routes.MapHttpRoute(
name: "route2",
routeTemplate: "{controller}/{organizationSys}"
);注意:我从路由中删除了"api/“。
但这似乎没有效果。在IIS中,api设置为域中的应用程序:

我可能忽略了一些显而易见的东西,但我不确定是什么。我该怎么摆脱那个双/api/
发布于 2018-03-15 16:15:50
有几种方法可以指定到控制器操作的路由,优先级的顺序很重要。
首先,它可以通过一般的配置来完成,比如你已经做过的.
config.Routes.MapHttpRoute(
name: "route2",
routeTemplate: "{controller}/{organizationSys}"
);但是,可以通过在控制器上指定一个路由属性或通过在谓词属性中指定路由来覆盖这一点。例如在下面的代码中..。
[Route("api/[controller]/[action]")]
public class TestController : Controller
{
[HttpGet]
[Route("/api")] // url... /api
[Route("/api/test")] // url... /api/test
[Route("testalso")] // url... /api/test/get/testalso
public string Get()
{
return "Alive";
}
[HttpGet("/api/echo/{id}")] // url... /api/echo/{id}
public string Echo(string id)
{
return $"Get Echo: {id}";
}
[HttpPost("{id}")] // url... /api/test/postit/{id}
public string PostIt(string id)
{
return $"Thanks for {id}";
}
}控制器上的声明指定控制器内所有方法的默认值,任何指定属性的方法都可以通过以'/‘开始路由来覆盖控制器,或者追加到控制器的路由中。有关示例,请参阅上面每个属性旁边的注释。
除此之外,路由将相对于在iis中托管的基本应用程序--在您的情况下,该应用程序从.
http://v10test.mydomain.com/api/希望你能得到足够的信息。
发布于 2018-03-15 15:27:03
这是因为它在IIS中的部署方式。对于IIS,应用程序位于地址
http://v10test.mydomain.com/api/
然后是所有的控制器等等,如果你把它部署到(例如)
http://v10test.mydomain.com/myapp/
打电话的方式就像
http://v10test.mydomain.com/myapp/api/ModelName/12345
编辑
同时-检查控制器内的控制器或方法的路线。这是另一个可以修改/扩展路线的地方。
https://stackoverflow.com/questions/49303289
复制相似问题