我有一个MVC 应用程序,它在一个简单的mvc 4 项目中包含一个 Web 应用程序。此外,我有一个Windows 应用程序,它是另一个 Windows 应用程序项目中 Web 应用程序的 Windows 执行。
Windows 应用程序使用MVC API并通过 resthelper 类以 TfsApiController 的名称调用 MVC Web 应用程序控制器。
除 post 方法外,所有方法均有效。我想将一个对象发布到 tfsapi 控制器。
rest 助手类的 post 方法:
public void Post(T targetObject)
{
if (targetObject == null)
{
throw new System.ArgumentNullException("targetObject");
}
//Get formatting details.
System.Net.Http.Formatting.MediaTypeFormatter myFormatter = new XmlMediaTypeFormatter();
myUrlSuffix = "api/tfsapi";
//Make the call.
var result = this.MainHttpClient.PostAsync(myUrlSuffix, targetObject, myFormatter).Result.Content.ReadAsAsync<T>().Result;
}
我的 TfsApiController 方法:
public void PostPreActivity(PreActivity preActivity)
{
}
和路由:
RouteTable.Routes.MapHttpRoute(
name: "PostPreActivity",
routeTemplate: "api/tfsapi/Post",
defaults: new { id = RouteParameter.Optional }
).RouteHandler = new SessionRouteHandler();
我浪费了很多时间,但我不知道是什么问题。
更新:
这是我的所有路由:
RouteTable.Routes.MapHttpRoute(
name: "GetWorkItemsByProject",
routeTemplate: "api/{controller}/{action}/{projectID}",
defaults: new { controller = "tfsapi", action = "GetWorkItems", projectID = UrlParameter.Optional }
).RouteHandler = new SessionRouteHandler();;
RouteTable.Routes.MapHttpRoute(
name: "ActionWebApiRoute",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
).RouteHandler = new SessionRouteHandler();
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
).RouteHandler = new SessionRouteHandler();