相关疑难解决方法(0)

是否有应用于Web API ApiController方法的默认动词?

我一直在看这篇文章的代码(在https://github.com/patelsan/WebAPIAuthentication中):http://www.codeproject.com/Articles/630986/Cross-Platform-Authentication-With-ASP- NET-Web-API.

它非常好,似乎工作正常.很少有文章解释这种令牌认证,但这是我见过的最好的.请注意,我是这项技术的新手,还有很多需要学习的地方.

所以,我注意到UsersController有这样的代码:

public class UsersController : ApiController
{
    public Status Authenticate(User user)
    {
        . . .
    }
}
Run Code Online (Sandbox Code Playgroud)

Authenticate方法不是以已知的HTTP动词开头,例如Get或Post,并且没有与此方法关联的[HttpGet]或[HttpPost]属性,那么控制器如何知道哪个动词与此方法相关联?只需查看代码,我怎么知道我需要使用哪个动词?如果没有匹配的话,是否存在"默认"动词这样的事情?

顺便说一句,如果你想知道,唯一有效的动词是POST.我很想知道为什么会这样.

asp.net asp.net-web-api asp.net-web-api-routing

13
推荐指数
2
解决办法
7091
查看次数

ASP.NET Web.api如何处理名称以GET开头的两个方法?

我正在查看Microsoft的以下教程.根据本教程,

在第一个示例中,"products"与名为ProductsController的控制器匹配.该请求是一个GET请求,因此框架在ProductsController上查找名称以"Get ..."开头的方法.此外,URI不包含可选的{id}段,因此框架会查找不带参数的方法.ProductsController :: GetAllProducts方法满足所有这些要求.

如果有两个方法,如GetAllProducts()和GetSoldProducts(),会发生什么?两者都没有参数.

您的第一个Web API教程

c# asp.net asp.net-mvc-4 asp.net-web-api

8
推荐指数
2
解决办法
2万
查看次数

Get matched route name in Web API

In my Web API handler I need to get the name of the route that matched the request.

public class CurrentRequestMessageHandler : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        var route = request.GetRouteData().Route;
        //now what?

        return base.SendAsync(request, cancellationToken);
    }
}
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-web-api

8
推荐指数
1
解决办法
5983
查看次数

控制器按区域划分

可能重复:
如何注册已在AREA中创建的控制器

我有一个问题 - 是否可以做下一个?

我有三个方面:

_Default
SiteOne
SiteTwo
Run Code Online (Sandbox Code Playgroud)

在每个区域内我都有一个名称相同的ApiController,但当然在不同的名称空间中:

MvcAppliaction.Areas._Default.Controllers.ValuesController
MvcAppliaction.Areas.SiteOne.Controllers.ValuesController
MvcAppliaction.Areas.SiteTwo.Controllers.ValuesController
Run Code Online (Sandbox Code Playgroud)

我还有一个当前值(我想使用)的配置区域.

如果他进入浏览器,我想将用户映射到适当区域(我可以在配置中找到)中的控制器:

/api/values
Run Code Online (Sandbox Code Playgroud)

例如,如果配置文件中的当前区域是SiteOne,则此请求应映射到MvcAppliaction.Areas.SiteOne.Controllers.ValuesController控制器,但如果我将配置文件中的当前区域更改为_Default的SiteTwo,则应将其映射到正确的控制器.

PS.使用MVC控制器很简单,您只需设置路线:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    namespaces: new[] { "MvcApplication.Web.Areas." + SiteName + ".Controllers") }
);
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc-areas asp.net-web-api asp.net-web-api-routing

7
推荐指数
3
解决办法
2万
查看次数

ASP.NET Web API中的多个PUT方法

我有一个控制器,Groups其中包含以下操作:

public GroupModel Get(int ID)

public GroupModel Post(CreateGroupModel model)

public void Put(PublicUpdateGroupModel model)

public void PutAddContacts(UpdateContactsModel model)

public void PutRemoveContacts(UpdateContactsModel model)

public void Delete(int ID)
Run Code Online (Sandbox Code Playgroud)

我想做的是使用标准的REST路由来调用标准的get,post,put,delete mehods.但拨打PutAddContactsPutRemoveContacts如果动作名称添加到URL,例如:

获取组/ - 调用Get方法

POST组/ - 调用Post方法

PUT组/ - 调用Put方法

DELETE groups/ - 调用Delete方法

PUT groups/addcontacts - 调用PutAddContacts方法

PUT groups/removecontacts - 调用PutRemoveContacts方法

是否可以设置路由来执行此操作,或者如果我想在URL中使用操作名称,是否需要沿着RPC路由进行路由?

.net c# asp.net-web-api

6
推荐指数
1
解决办法
9667
查看次数

通过MVC 4 Web API实现"真正的"REST路由

TL; DR摘要:我可以为HTTP GET,PUT和DELETE配置MVC Web API路由吗?

我一直在寻找用私有API替换旧的数据访问层(基于DataSet和TableAdapter的DLL),以便在成功时创建公共API.我已经完成了MVC 4的一些工作来刷新我的前端,并喜欢使用它,因此在深入研究基于WS或WCF的库之前探索"Web API"项目类型似乎是明智的.

初始演示允许我很好地返回XML/JSON,例如:

//service.url/api/Users

...返回用户列表,而特定用户的详细信息可通过以下方式访问:

//service.url/api/Users/99

到目前为止,如此RESTful.但是,为了真正将URI映射到资源,我想将HTTP PUT(新用户)或HTTP DELETE(删除用户)映射到上面列出的URI.在我为这些项目看到的所有示例中,以及Visual Studio中提供的Scaffolds,遵循以下惯例:

//service.url/api/Users/Create

//service.url/api/Users/Delete/99

//service.url/api/Users/Update/99

... 等等.这感觉就像是把这个问题撇在了我的身上,如果将这些问题放在一起,那就太遗憾了!

有关如何最好地接近这个的任何想法?

c# asp.net api rest asp.net-routing

4
推荐指数
1
解决办法
7483
查看次数

ASP.NET web api路由的两个方法具有相同的声明

我正在使用Asp.net web api创建一个api.我有BookController两种方法的控制器:

  • GetBook(int id) 返回给定id和
  • GetBook(int userId) 它返回给定用户的所有书籍

如果我打电话,localhost/book/3那么调用哪种方法是不明确的.我如何区分这两种方法?

asp.net-web-api

0
推荐指数
1
解决办法
788
查看次数