AngularJS可以´;不要从工厂呼叫APIcontroller

AngularJS可以´;不要从工厂呼叫APIcontroller,angularjs,factory,asp.net-apicontroller,Angularjs,Factory,Asp.net Apicontroller,我无法从工厂获得API控制器的响应 我发现错误404未找到页面 我在HTML文档中找到了正确的.js文件,路由似乎很好 App.js: module.factory('userFactory', function($http) { return { getFormData: function(callback) { $http.get('/api/GetMessage').success(callback); } } }); module.controlle

我无法从工厂获得API控制器的响应

我发现错误404未找到页面

我在
HTML文档中找到了正确的
.js文件
,路由似乎很好

App.js:

module.factory('userFactory', function($http) {
return {
    getFormData: function(callback) {
        $http.get('/api/GetMessage').success(callback);
    }
  }
});

module.controller("messageController", function($scope, userFactory) {
  $scope.getMessage = function() {
    userFactory.getFormData(function(results) {
        $scope.text = results;
    });
  }
});
API控制器:

using System.Web.Http;

namespace kittyChatt.Backend.Controllers {
public class GetMessageController : ApiController
{
    public object Get()
    {
        object obj = "hello world";        
        return obj;
    }
  }
}
我想让hello world显示我在视图中按下按钮的时间

视图:


收到我的留言了吗
{{text}}

请帮忙

return {
   getFormData: function(callback) {
      $http.get('/api/GetMessage/Get').success(callback);
   }
}
你忘了告诉你的控制器你想呼叫的动作

默认情况下,操作是HttpPost(是的,我知道,我写了HttpGet,在asp.net mvc中就是这样),但我建议您仍然用正确的动词修饰方法:

[HttpGet]
public object Get()
{
    object obj = "hello world";        
    return obj;
}
编辑,与第一个问题完全没有链接:
引用自asp.net文档:

  • 您可以使用以下属性指定HTTP方法:AcceptVerbs、HttpDelete、HttpGet、HttpHead、HttpOptions、HttpPatch、HttpPost或HttpPut
  • 否则,如果控制器方法的名称以“Get”、“Post”、“Put”、“Delete”、“Head”、“Options”或“Patch”开头,则按照惯例,该操作支持该HTTP方法
  • 如果以上都没有,则该方法支持POST
但是,我仍然认为总是用动词来修饰动作是一个很好的做法。这种做法应该避免无用的讨论;-)

你忘了告诉你的控制器你想呼叫的动作

默认情况下,操作是HttpPost(是的,我知道,我写了HttpGet,在asp.net mvc中就是这样),但我建议您仍然用正确的动词修饰方法:

[HttpGet]
public object Get()
{
    object obj = "hello world";        
    return obj;
}
编辑,与第一个问题完全没有链接:
引用自asp.net文档:

  • 您可以使用以下属性指定HTTP方法:AcceptVerbs、HttpDelete、HttpGet、HttpHead、HttpOptions、HttpPatch、HttpPost或HttpPut
  • 否则,如果控制器方法的名称以“Get”、“Post”、“Put”、“Delete”、“Head”、“Options”或“Patch”开头,则按照惯例,该操作支持该HTTP方法
  • 如果以上都没有,则该方法支持POST
但是,我仍然认为总是用动词来修饰动作是一个很好的做法。这种做法应该避免无用的讨论;-)

你忘了告诉你的控制器你想呼叫的动作

默认情况下,操作是HttpPost(是的,我知道,我写了HttpGet,在asp.net mvc中就是这样),但我建议您仍然用正确的动词修饰方法:

[HttpGet]
public object Get()
{
    object obj = "hello world";        
    return obj;
}
编辑,与第一个问题完全没有链接:
引用自asp.net文档:

  • 您可以使用以下属性指定HTTP方法:AcceptVerbs、HttpDelete、HttpGet、HttpHead、HttpOptions、HttpPatch、HttpPost或HttpPut
  • 否则,如果控制器方法的名称以“Get”、“Post”、“Put”、“Delete”、“Head”、“Options”或“Patch”开头,则按照惯例,该操作支持该HTTP方法
  • 如果以上都没有,则该方法支持POST
但是,我仍然认为总是用动词来修饰动作是一个很好的做法。这种做法应该避免无用的讨论;-)

你忘了告诉你的控制器你想呼叫的动作

默认情况下,操作是HttpPost(是的,我知道,我写了HttpGet,在asp.net mvc中就是这样),但我建议您仍然用正确的动词修饰方法:

[HttpGet]
public object Get()
{
    object obj = "hello world";        
    return obj;
}
编辑,与第一个问题完全没有链接:
引用自asp.net文档:

  • 您可以使用以下属性指定HTTP方法:AcceptVerbs、HttpDelete、HttpGet、HttpHead、HttpOptions、HttpPatch、HttpPost或HttpPut
  • 否则,如果控制器方法的名称以“Get”、“Post”、“Put”、“Delete”、“Head”、“Options”或“Patch”开头,则按照惯例,该操作支持该HTTP方法
  • 如果以上都没有,则该方法支持POST

但是,我仍然认为总是用动词来修饰动作是一个很好的做法。这种做法应该避免无用的讨论;-)

api的路由路径正确吗

必须在配置中写入以下内容:

public static void Register( HttpConfiguration config )
{
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { action = RouteParameter.Optional, id =   RouteParameter.Optional }
            );
}

api的路由路径正确吗

必须在配置中写入以下内容:

public static void Register( HttpConfiguration config )
{
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { action = RouteParameter.Optional, id =   RouteParameter.Optional }
            );
}

api的路由路径正确吗

必须在配置中写入以下内容:

public static void Register( HttpConfiguration config )
{
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { action = RouteParameter.Optional, id =   RouteParameter.Optional }
            );
}

api的路由路径正确吗

必须在配置中写入以下内容:

public static void Register( HttpConfiguration config )
{
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { action = RouteParameter.Optional, id =   RouteParameter.Optional }
            );
}

在WebApi中,这不是一个动作,而是一个HttpVerb,由其名称推断。因此WebApi知道它是一个
Get
,因为方法名以
Get
开头。您不需要明确地定义它,但是它们不是,如果我有
公共对象Post(){}
,那么这将只响应一个Post请求。thx,我用asp.net文档的引用更新了我的答案。(我也删除了我在评论中所犯的错误)在WebApi中,这不是一个动作,而是一个HttpVerb,它是根据它的名称推断出来的。因此WebApi知道它是一个
Get
,因为方法名以
Get
开头。您不需要明确地定义它,但是它们不是,如果我有
公共对象Post(){}
,那么这将只响应一个Post请求。thx,我用asp.net文档的引用更新了我的答案。(我也删除了我在评论中所犯的错误)在WebApi中,这不是一个动作,而是一个HttpVerb,它是根据它的名称推断出来的。因此WebApi知道它是一个
Get
,因为方法名以
Get
开头。您不需要明确地定义它,但是它们不是,如果我有
公共对象Post(){}
,那么这将只响应一个Post请求。thx,我用一个q更新了我的答案