通过Fiddler 2发布到Web Api

时间:2014-07-30 13:27:32

标签: visual-studio-2010 post asp.net-web-api localhost fiddler

我正在阅读一本书,以了解有关MVC的WebAPI控制器的更多信息,并且已经陷入了一个问题。我尝试使用Fiddler POST到我的WebAPI控制器(在Visual Studio 2010中),但无法连接到我的控制器。

我按照本书使用了以下课程:

public class Employee {
    public int      Id          { get; set; }
    public string   FirstName   { get; set; }
    public string   LastName    { get; set; }
    public int      Department  { get; set; }
}

我的WebApi Controller POST方法,第一行var maxId = ...行有一个断点:

public class EmployeesController : ApiController {
    public HttpResponseMessage Post(Employee employee) {
        var maxId = list.Max(e => e.Id);
        employee.Id = maxId + 1;

        list.Add(employee);

        var response = Request.CreateResponse<Employee>(HttpStatusCode.Created, employee);

        string uri = Url.Link("DefaultApi", new { id = employee.Id });
        response.Headers.Location = new Uri(uri);
        return response;
    }
}

我可以通过Fiddler2发布GET而不会出现问题(重新运行我从Chrome跟踪的请求:

Successful GET

然后我尝试调整标题以运行POST,并在使用&#34; localhost&#34;时收到404。作为我的服务器:

404 localhost

根据许多建议,我尝试将服务器更改为&#34; localhost。&#34;,但收到了相同的404:

404 localhost.

我最后一次尝试改变了&#34; localhost&#34;到我的计算机名称,并在尝试发布一秒钟之后收到502(这与前两个请求具有相同的内容,但只有上面命名的更改为url):

502 frankgrimes

根据本书和在线的其他一些建议,在开始尝试任何这些POSTS之前,我还在<configuration>节点的Web.config中添加了以下内容。它位于<configSections>节点之后。

<system.net>
  <defaultProxy>
    <proxy usesystemdefault="False" bypassonlocal="True" proxyaddress="http://127.0.0.1:8888"/>
  </defaultProxy>
</system.net>

我缺少什么想法?到目前为止,在我的所有研究中,this StackOverflow question最接近帮助我,但我已经尝试了那里唯一答案的建议,甚至视频也没有给我进一步的见解。

此时,如果部分内容与Visual Studio 2010有关,我不会感到惊讶,除非我错过了一些非常简单的内容。

1 个答案:

答案 0 :(得分:-1)

您确定已定义默认路由吗? 它应该是这样的:

routes.MapHttpRoute(
    name: "API Default",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);