首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >StatusCode: 404,ReasonPhrase:‘未找到’,版本: 1.1,

StatusCode: 404,ReasonPhrase:‘未找到’,版本: 1.1,
EN

Stack Overflow用户
提问于 2013-04-21 20:05:22
回答 4查看 31.6K关注 0票数 4

我使用Web api selef host:

代码语言:javascript
运行
复制
public class TestController : ApiController
{
    [HttpPost]
    public void Testp([FromBody]string title)
    {
        Console.WriteLine("Post");
    }
}

这是一个简单的控制器,这是我的客户端:

代码语言:javascript
运行
复制
client.BaseAddress = new Uri("http://localhost:1010");
      const string englishTitle = "TesteDelete";
      var post = client.PostAsync("Test/Testp", new
      {
                    title = englishTitle
                }, new JsonMediaTypeFormatter());
                var result = post.Result;
                if (result.IsSuccessStatusCode)
                {

                }
                else
                {
                    string content = result.Content.ReadAsStringAsync().Result;

                }

为什么我的结果是:

代码语言:javascript
运行
复制
{StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Date: Sun, 21 Apr 2013 12:00:03 GMT
  Server: Microsoft-HTTPAPI/2.0
  Content-Length: 165
  Content-Type: application/json; charset=utf-8
}}

我想我的模型绑定器有一些错误。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-21 20:11:01

我可以想象您正在使用visual studio web服务器(按时钟关闭)进行调试。这个端口可以随时更改,所以我猜它不再是URL中指定的'1010‘了:

"http://localhost:1010"

也许你应该使用look here来自动获取当前的网址。

票数 5
EN

Stack Overflow用户

发布于 2013-04-22 11:04:09

  1. 如果你使用缺省路由,它是RESTful (通过HTTP动词,而不是RPC,通过方法名),所以你不应该发送到http://localhost:1010/Test/Testp,但是
  2. 操作签名接受一个字符串,但你是一个匿名对象而不是posting。你的帖子应该是这样的(请注意,我们只发送了字符串):

var post = client.PostAsync("Test", englishTitle, new JsonMediaTypeFormatter());

票数 1
EN

Stack Overflow用户

发布于 2017-05-26 06:49:44

我发现我的问题是,如果我没有以"/“结束基本URI,并尝试将其前置为client.PostAsync(..那是行不通的。但是如果我附加到基本uri,它会这样,

代码语言:javascript
运行
复制
using (HttpClient client = new HttpClient(handler) { BaseAddress = new  Uri("https://test.test.com/somepath/") })
 var response = client.PostAsync("Broadcast/Order", content).Result;

工作,同时:

代码语言:javascript
运行
复制
 using (HttpClient client = new HttpClient(handler) { BaseAddress = new Uri("https://test.test.com/somepath") })
 var response = client.PostAsync("/Broadcast/Order", content).Result;

不会。不知道为什么,但很高兴我很快就弄明白了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16130908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档