gpt4 book ai didi

c# - 我收到 404 错误 - asp.net web api

转载 作者:太空狗 更新时间:2023-10-29 22:32:12 30 4
gpt4 key购买 nike

我的任务是创建服务(使用 asp.net api)并将其用于 android 应用程序。

我从来没有做过这样的事情,所以我一开始就遇到了问题。 :(

首先,我创建了几个类的类库。其次,我创建了 asp.net web 应用程序并将类库引用到其中。

我的第一个问题是我不知道如何从 Controller 访问方法。所以,我试着在没有它的情况下开始,看看它是否有效……当我运行它时,我将 Controller 添加到路径中,但出现错误。

我这样运行它:http://localhost:51041/ValuesController1

错误是这样的:

Server Error in '/' Application.

The resource cannot be found.

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could >have been removed, had its name changed, or is temporarily unavailable. Please review the >following URL and make sure that it is spelled correctly.

Requested URL: /ValuesController1

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408

好的,现在我的代码:

Controller 类:

    public class ValuesController1 : ApiController
{
// GET api/<controller>
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}

// GET api/<controller>/5
public string Get(int id)
{
return "value";
}

// 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)
{
}

public List<BuzzMonitor.Web.Message> Search()
{
//return new BuzzMonitor.Web.MessageHandler.Search(...);
}
}

MessageHandler 类:

public class MessageHandler
{
private List<Message> _dummyMessages = new List<Message>()
{
new Message(){
MessageId = 1,
CreatedDate = new DateTime(2014, 5, 27),
Text = "Srpska vodoprivreda...",
Autor = "Marko Markovic",
Source = "Twitter"

},
new Message(){
MessageId = 2,
CreatedDate = new DateTime(2014, 5, 27),
Text = "Aerodrom Beograd...",
Autor = "Zoran Zoric",
Source = "B92"

}
};

public List<Message> GetLatestMessages(int nrMessagesToReturn)
{
List<Message> retVal;

retVal = this._dummyMessages.GetRange(0, nrMessagesToReturn);

return retVal;
}

public List<Message> Search(string text, DateTime dateFrom, DateTime dateTo, List<int> themeIds, List<int> sourceIds, int pageIndex, int pageSize)
{
List<Message> retVal;

retVal = this.Search(text, dateFrom, dateTo, themeIds, sourceIds);

if (retVal != null && retVal.Count > 0)
{
retVal = retVal.GetRange(pageIndex * pageSize, pageSize);
}

return retVal;
}

public List<Message> Search(string text, DateTime dateFrom, DateTime dateTo, List<int> themeIds, List<int> sourceIds)
{
List<Message> retVal = null;

retVal = this._dummyMessages.Where(m => m.Text.IndexOf(text, StringComparison.OrdinalIgnoreCase) > -1 &&
m.CreatedDate >= dateFrom &&
m.CreatedDate < dateTo &&
(themeIds == null || themeIds.Count == 0 || (themeIds.Contains(m.ThemeId))) &&
(sourceIds == null || sourceIds.Count == 0 || (sourceIds.Contains(m.SourceId)))).ToList<Message>();

return retVal;
}


}

消息类:

    public class Message
{
public int MessageId { get; set; }

public DateTime CreatedDate { get; set; }

public string Text { get; set; }

public string Autor { get; set; }

public string Source { get; set; }

public int ThemeId { get; set; }

public int SourceId { get; set; }
}

所以,问题是: 1. 我不知道如何从 MessageHandler 调用 Controller 中的搜索。 2. 我收到错误消息,我不知道是因为我在 Controller 中没有我需要的一切,还是我需要设置一些配置...

我正在使用 VS 2010。

感谢您的帮助,如果我的问题看起来很愚蠢,我深表歉意...

最佳答案

将您的 Controller 类重命名为 XXXController。例如,在本例中将其称为 ValuesController。 WebAPI 中的默认路由是使用以下代码设置的:

routes.MapRoute(
"Default", //The name of this route.
"api/{controller}/{action}/{id}", //The url, note the prefix "api" is hard-coded.
new { //The default values:
controller = "Home", //{controller} in URL defaults to Home (i.e. HomeController)
action = "Index", //{action} in URL defaults to Index method
id = UrlParameter.Optional }); //The id part is optional

基于上述路由的示例 URL 是 /api/Home/action/id。请注意,未使用类的 Controller 后缀。因此,要将其映射到您重命名的 ValuesController,它会变成:

http://localhost:51041/api/Values/Get

关于c# - 我收到 404 错误 - asp.net web api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23908110/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com