【发布时间】:2013-02-06 22:30:16
【问题描述】:
我有一个 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();
【问题讨论】:
标签: asp.net-mvc asp.net-web-api asp.net-mvc-routing asp.net-web-api-routing