无论如何我都无法从ApiController到达任何方法,如果我尝试通过浏览器到达它但没有显示任何方法,路由就会出现。
我的控制器:
namespace AgroRiego.Controllers
{
public class datacontrol : ApiController
{
[HttpGet, Route("api/get")]
public string Get([FromUri]string user, string pass)
{
string check = SQL.Reader("SELECT * FROM users WHERE username='" + user + "' AND password='" + pass + "'");
if (String.IsNullOrWhiteSpace(check))
{
return "error en credenciales";
}
DataTable horarios = SQL.table_read("SELECT * FROM horario_riego");
string json = Utils.ConvertDataTabletoJSON(horarios);
return json;
}
[HttpPost, Route("api/post")]
public void Post([FromBody]string value)
{
string i = value;
}
}
}
我的全球Asax:
namespace AgroRiego
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
}
和我的webapiconfig:
namespace AgroRiego
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Configuración y servicios de API web
// Rutas de API web
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
我在项目中有更多的Web表单(最初只是带有服务器端代码的html页面,但是我需要添加一些方法来检索和发送数据,非常感谢!
EDIT1:我设法通过更改URL到达HTTP 200,但是无论如何我都无法达到方法(在调试模式下它不会在断点处停止)如何正确路由Api(因此它不是Login.aspx) ),以及如何解决到达的方法?
EDIT2:我在文档中读到了我需要在全局中使用此行:
RouteConfig.RegisterRoutes(RouteTable.Routes);
但是我不使用MVC没关系吗?我尝试使用全新的MVC Web Api到达路线,但结果为“无响应”
答案 0 :(得分:1)
在控制器上使用routerprefix。因此,您以
访问该URLhttp://localhost/routerprefix/router
HttpClient类可用于发送和接收HTTP请求和响应。由于您尝试从aspx页面使用WebApi,因此更好的方法是创建HttpClient实例
下面是一个非常简单的实现。请检查此网址以获取更多信息
HttpClient client = new HttpClient(); HttpResponseMessage response = await client.GetAsync("http://localhost:49342/api/get"); if (response.IsSuccessStatusCode) { product = await response.Content.ReadAsAsync(); }
答案 1 :(得分:1)
通过您的设置,看起来似乎是正确的
您有:
config.MapHttpAttributeRoutes();
-设置属性路线config.Routes.MapHttpRoute(
-设置默认路由GlobalConfiguration.Configure(WebApiConfig.Register);
-在启动时注册所以它应该工作。
我认为您遇到的问题是调用方式
WebAPI路由与MVC略有不同
例如:
在get方法中,路由设置如下
[HttpGet, Route("api/get")]
所以您应该使用GET http方法将其命名为{host}/api/get
在屏幕快照中,您正在使用{host}/api/get/Get
进行呼叫-由于路由不匹配,因此无法正常工作
与您的POST方法相同
因此,再尝试一次,您应该可以实现
答案 2 :(得分:0)
要在其余测试工具中添加的URL是
http://localhost:49342/api/get
方法类型为GET
如果要从aspx页面调用此Web api,请使用httpClient类。