将多个对象从Angular控制器发布到Web API 2 - c#

我能够从我的角度控制器发送原始json对象,该对象在我的Web api方法中反序列化为已知类型。很好,但是我现在需要能够在同一请求中发送其他参数,这些参数可以是json对象或简单类型,例如string或int。

我看过诸如this之类的文章,它们准确地描述了我的问题,但是它们是从代码隐藏而不是客户端发送请求的。

我试图构造一个json数组并将其发送进去,但收到以下消息:'无法创建抽象类'。

控制器代码(适应)

var request = {
            params:[]
        };

        request.params.push(jsonObjectA);
        request.params.push({"someString" : "ABCDEF"});

        $http({
            method: 'POST',
            url: targetUri,
            data: request
        })

Web API方法签名

 public JsonResult TestMethod(JArray request)

这种方法听起来明智吗?如果可以的话,我真的想避免为每个请求创建dto对象。

参考方案

OK通过遵循this article设法使其正常运行。

然后,我可以在api方法签名中使用简单和复杂类型:

public JsonResult MyAction(StonglyTypedObject myObj, string description)

我正在传递data参数中的值:

 $http({
            method: 'POST',
            url: targetUri,
            data: {
                myObj: myObj,
                description: "desc here"
            }
        }).success(...

这是我能找到的最干净的解决方案,希望对您有帮助。

ASP.NET Web API 2中AuthorizeAttribute发生了什么变化? - c#

我已经将项目和一组单元测试从ASP.NET Web API升级到ASP.NET Web API 2。我们将自定义DelegatingHandler用于自定义身份验证机制。它将Thread.CurrentPrincipal和HttpContext.Current.User设置为适当的System.Security.Claims.ClaimsPrincipal。…

从代码和网站调用Web API - c#

首先,我使用C#4.0作为编码语言。我相信我看到了一些答案,其中4.5引入了一些可以使此操作变得容易得多的方法,但这不是我要求更改框架。我正在创建一个MVC4 WebApi,它将同时被网站和C#代码使用(在另一个项目中)。通常,当从JavaScript调用时,我会这样做:$.ajax({ dataType: 'text', url: &#…

调用SignalR Hub不适用于Asp.Net Core Web API - c#

我是SignalR的新手。我正在尝试设置一个Asp.Net Core WebAPI,以便其他客户端可以使用SignalR连接到它并获取实时数据。我的Hub类是:public class TimeHub : Hub { public async Task UpdateTime(string message) { await Clients.All.SendAs…

自托管Webapi时如何设置HTTP请求队列长度? - c#

运行ASP.NET WebApi,我想设置HTTP请求队列的长度。我发现一些blog表示应该在OwinHttpListener上以及msdn documentation中也可以这样做。所以我用这种方法来获取OwinHttpListnerpublic void Configuration(IAppBuilder appBuilder) { HttpConfig…

重复使用Google Api Bearer令牌来访问用户的云端硬盘 - javascript

我有以下几点: gapi.auth.authorize( { client_id: CLIENT_ID, scope: SCOPES, immediate: false }, handleAuthResult); 这使我可以访问access_token:目标是使该应用程序的用户可以授予对我的应用程序的访问权限,以使用其Google驱动器存储其内容。我需要能够…