估计最坑人的坑是visual studio导致的,用IISExpress 调试的时候,设置的ProjectUrl,如果修改,就没那么容易如你所愿了。
1. Webapi的url设置在项目属性里的ProjectUl里,假如url为http://localhost:53430
如果你的api配置如下(本文用的webapi2.0, netframework 4.5.1, system.Web.Mvc 是5.0.0):..\App_Start\WebApiConfig.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace StudioProcessService { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } } }
则你的实际请求的api的url地址为:http://localhost:53430/api/StudioProcessFile/Transfer
其中api是框架自动添加的,估计跟上面的webapi的路配置有关系。
StudioProcessFile 就是controller的类名,Transfer是函数名称。
namespace StudioProcessService.RestApi { //[WebApiActionFilter] [RoutePrefix("api/StudioFileProcess")] public class StudioFileProcessController : ApiController, { [HttpPost] public VOID Transfer(StudioProcessRequest request) { ......
.
如果修改ProjectUrl, 有时提示啥build virtual directory。 但是实际上,可能你的URL还是没有修改成功。
解决办法是,删除C:\Users\{User}\Documents\IISExpress 目录, 不用担心。删除以后,关闭vs,然后重新打开,vs可自动再创建该目录(经过试验是直接点击sln方式的重新打开,而不是打开vs后,从历史工程里选择sln),
此时文件完成初始化,新的URL可能会生效了。
在上面的目录下有个ApplicationHost.config文件,定义了很多Express调试的参数,可以好好研究一下。
参考资料:
https://stackoverflow.com/questions/15873126/unable-to-launch-the-iis-express-web-server