c# - 显示 400 的 ASP.NET Web 应用程序 (WebForms) 项目的 Api
问题描述
我是 .NET 框架的新手,我的公司还没有使用 Core,所以我想弄清楚为什么我的 Web 应用程序 api 显示 400。我有一个普通的 Web 表单项目并添加了一个名为的控制器类标记控制器.cs。我的项目在端口 44318 上,我尝试访问 localhost/44318/api/tag 没有运气。我还尝试添加一个带有 api 子文件夹的控制器文件夹和其中的控制器,但无济于事。我已经发布了我的项目层次结构和错误本身的图像。我有一种感觉,没有 global.asax 的项目可能与它有关,但另一个项目中有一个。也许 TagController.cs 指向另一个端口?任何帮助是极大的赞赏。
标签控制器.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using ClarityDBWebFormsRedis;
using StackExchange.Redis;
namespace ClarityDBWebFormsRedis
{
public class TagController : ApiController
{
// GET api/<controller>
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/<controller>/5
public string Get(string data) {
return "doge";
}
// POST api/<controller>
public void Post([FromBody] string value)
{
}
// PUT api/<controller>/5
public void Put(int id, [FromBody] string value)
{
}
// DELETE api/<controller>/5
public void Delete(int id)
{
}
}
}
解决方案
您需要在项目中进行默认(路由)配置,以便它知道应该使用 ApiController 做什么,或者如何调用 API。例如,这是在 Global.asax 中定义的。您可以简单地将您的课程TagController
放入一个名为“Controllers”的文件夹中。
Global.asax 相应地看起来像这样:
using System.Web.Http;
using System.Web.Routing;
(...)
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional });
}
例如,一个 ApiController 如下所示:
public class PingController : ApiController
{
[HttpGet, AllowAnonymous]
public IHttpActionResult Get()
{
return Ok();
}
}
对于普通页面,创建一个 .aspx 页面,然后根据创建的文件夹结构在浏览器中调用它就足够了。如果你使用 MVC,那么这个页面是在项目的不同文件和文件夹中创建的(Views/Home.cshtml、Models/HomeViewModel.cs 和 Controllers/HomeController.cs)。
推荐阅读
- c++ - __unaligned 说明符何时与指针一起使用?
- c - 防止 CreateFileMapping 更改源文件 (Windows)
- c# - System.DirectoryServices.AccountManagement PrincipalContext 与 IIS 中默认网站下的多个应用程序
- html - 远程加载
- python - 自定义损失函数中的 Keras 值错误
- python - 拟合 scikit-learn 决策树和随机森林分类器时的 MemoryError
- javascript - Javascript:如何取消脚本的执行
- amazon-web-services - 来自 S3 的 AWS Boto3 EMR 软件设置配置
- javascript - 分配 window.parent.location.href = window.location.href
- c# - .Net Core WCF 客户端抛出 WinHttpException 错误 0x2f9a