Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PostAsJsonAsync找不到请求的URI_C#_Post_Asynchronous_Owin_Katana - Fatal编程技术网

C# PostAsJsonAsync找不到请求的URI

C# PostAsJsonAsync找不到请求的URI,c#,post,asynchronous,owin,katana,C#,Post,Asynchronous,Owin,Katana,我目前正在学习如何使用OWIN和Katana创建C#server 我试图回复一个帖子,但不幸的是,它没有找到功能。 这就是我所拥有的:这是一个用户端类,它通过POST(postsjsonasync())发送用户数据(用户名和密码) 在服务器端,我有一个控制器,看起来像这样: [RoutePrefix("api/register/")] class RegisterController : ApiController { public async Task<IHttpActionRe

我目前正在学习如何使用OWIN和Katana创建C#server

我试图回复一个帖子,但不幸的是,它没有找到功能。

这就是我所拥有的:

这是一个用户端类,它通过POST(postsjsonasync())发送用户数据(用户名和密码)


在服务器端,我有一个控制器,看起来像这样:

[RoutePrefix("api/register/")]
class RegisterController : ApiController
{
    public async Task<IHttpActionResult> Post(KeyValuePair<string, string> userData) 
    {
       // I never get inside here
    }
}
public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var config = ConfigureWebApi();
        app.UseWebApi(config);
    }
}

编辑:在我的控制器类之前将路由更改为RoutePrefix。

将控制器类公开

[Route("api/register/")]
public class RegisterController : ApiController

不公开意味着Web API系统无法发现控制器及其操作。

我要看的第一件事是您安装了哪些NuGet软件包,并确保在启动类中一切正常。您的Startup类应该如下所示:

[RoutePrefix("api/register/")]
class RegisterController : ApiController
{
    public async Task<IHttpActionResult> Post(KeyValuePair<string, string> userData) 
    {
       // I never get inside here
    }
}
public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var config = ConfigureWebApi();
        app.UseWebApi(config);
    }
}
如果您在IIS上托管,请确保已安装以下NuGet软件包:

  • Json
  • Microsoft.AspNet.WebApi.Client
  • Microsoft.AspNet.WebApi.Core
  • Microsoft.AspNet.WebApi.Owin
  • Microsoft.Owin.Host.System.Web
  • Microsoft.Owin
  • 奥温

尝试向控制器添加
public

[Route("api/register/")]
public class RegisterController : ApiController
{
    public async Task<IHttpActionResult> Post(KeyValuePair<string, string> userData) 
    {
       // I never get inside here
    }
}
用这个来代替:

config.MapHttpAttributeRoutes();
以前

app.UseWebApi(config);

要做到这一点,您必须为web api中的每个ruote添加前缀,但我想这更容易理解,而且我听说它将成为vNext的标准。

感谢您对新属性路由的建议。是的,我同意,如果我必须在他们每个人面前设定路线,那会更容易、更干净!哎呀,我不知道有人在我面前有正确的解决办法。
config.MapHttpAttributeRoutes();
app.UseWebApi(config);