问题标签 [asp.net-web-api2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
183372 浏览

c# - 在哪里可以找到用于升级到 System.Web.Http v5.0.0.0 的 NuGet 包?

刚刚升级了一个 ASP.NET MVC4 项目以使用 Unity.WebApi 版本 5.0.0.0 并且它需要 System.Web.Http v 5.0.0.0 根据以下错误:

我目前正在引用 System.Web.Http v4.0,但已将以下 NuGet 包升级到各自的最新版本:

  • ANTLRv3

  • Microsoft ASP.NET 通用提供程序

  • Microsoft.Web.Infrastructure

  • 微软 ASP.NET MVC

  • 微软 ASP.NET 剃须刀

  • Microsoft ASP.NET 通用提供程序核心库

  • Microsoft ASP.NET 通用提供程序

  • Microsoft ASP.NET Web API 2 客户端

  • Microsoft ASP.NET Web API 2 核心

  • Microsoft ASP.NET Web API 2 Web 主机

  • 微软 ASP.NET Web API 2

  • 微软 ASP.NET 网页

  • Microsoft.Web.Infrastructure

  • 网络润滑脂

    通过 NuGet。我没有列出相关的 JavaScript 库,例如 Micrososft.jQuery.Unobtrusive Validation 等。

升级 System.Web.Http 的 NuGet 包是什么,还是我必须手动执行此操作?

0 投票
2 回答
3703 浏览

asp.net-web-api - Web API 访问令牌应该如何存储?

Stackflow 中有一些类似的主题,但我发现它们都没有回答我的问题。

ASP.NET Web API 2 就是我们现在使用的。我现在能够接受CORS来自我的 WebAPI 的身份验证请求。通过在Authorization标头(Bearer xxx)中发送的访问令牌,我可以访问受[Authorize]标签保护的资源。

问题是,如何在常规登录表单中实现类似于“记住我”复选框的功能?我们想要的是用户下次访问我们的网页时不需要再次登录。访问令牌是否仅用于一个会话?WebAPI2如何设置token的过期时间?我们如何在会话中保存一些信息或使用本地存储来存储这些身份验证信息?当我们将此令牌存储在客户端时,我们是否需要某种加密来保护它?

您对实现“记住我”功能有何建议?

0 投票
1 回答
1073 浏览

xml - 使用原始 XML 提要进行 Web API 内容协商

尝试创建 Web API 服务以允许我的网站通过 javascript 访问外部 XML 提要(避免同源策略问题)。这些提要返回原始 XML,如下所示(使用 Fiddler 捕获):

要求:

回复:

我希望使用 Web API 的内容协商功能。但是,鉴于响应的原始 XML 提要,我不确定控制器应该返回哪种类型。

我尝试了几种变体(通过 ReadAsStringAsync 的字符串、通过 LoadXml 的 XmlDocument、通过 JsonConvert.SerializeXmlNode 的字符串等)。到目前为止,我尝试过的所有方法都不适用于 Accept: application/xml 和 Accept: application/json 请求。一种接受类型有效,而另一种产生异常或未按要求格式化的结果。

我是 Web API 的新手。我所看到的一切似乎都建议将数据转换为适当的 CLR 类型,然后 Content Negotiation 应该负责其余的工作。只是不确定如何处理这个原始 XML 提要。我希望控制器按要求返回正确的 JSON 或正确的 XML(基本上通过原始提要中的原始 XML)。

有什么建议么?

0 投票
2 回答
1747 浏览

c# - 将 DisplayFormatAttribute.ConvertEmptyStringToNull 的默认值设置为 false

我刚刚将一堆 Web 服务转换为 Web API2。现在,当浏览器发送一个空字符串并输入我的转换为 null 的代码时,我的 C# 代码会爆炸。我研究了全球解决方案,但没有找到适合我的解决方案。

我当然可以为所有 Web API 模型中的每个字符串手动设置它,但我有很多模型,所以更喜欢全局解决方案。

到过这里:将 JSON 对象传递给 MVC 控制器和其他页面时 string.empty 转换为 null并尝试实现每个解决方案,但无济于事。

如何将 ConvertEmptyStringToNull 的默认值全局设置为 false?

0 投票
1 回答
114 浏览

asp.net-mvc - 保护从另一个项目或网站调用的 webapi2 项目

我有 2 个项目一个 mvc5 和 webapi。我想从纯客户端庄园调用 api,即使我使用 mvc(我正在减慢尝试将旧代码迁移到类似 spa 的应用程序仍然能够维护当前代码库的速度)。

api 的 url 位于主域下,例如 subdomain.mydomain.com/api,所以我不必担心 jsonp 或跨域的东西。

如何保护 api。当用户登录到 mvc5 应用程序时,我是否认为有某种我可以访问的密钥或令牌。我将它存储在站点上的某个位置并将其添加到请求标头中?

如果我遵循这种方法,我如何在 api 端验证令牌。读取标题的动作过滤器?还是有更清洁的方法。

我真正能找到的关于使用 api 的唯一信息是使用基本身份验证,这是我真的不想做的事情。

0 投票
1 回答
6179 浏览

asp.net-mvc - 没有在 ajax 中接收 Web API HttpResponseMessage?

第一次尝试 Web API,有点困惑。

我在 Web Api 中设置了一个基本的删除:

并通过 jquery ajax 调用它:

这行得通... Chrome 开发者工具说 StatusCode: 200 用户已成功删除。

不幸的是,来自 ajax 成功的警报只是说“成功:未定义:未定义”,并且在 Chrome 中的成功函数内部中断时,响应变量为空白

如何在 ajax 调用中检索状态代码/消息以显示在屏幕上?

谢谢

0 投票
6 回答
21268 浏览

javascript - 如何通过 AngularJS $http 从 ASP.Net Web API 2 获取访问令牌?

我尝试这样:

然后尝试将grant_type更改为参数:

仍然得到可怕的:{"error":"unsupported_grant_type"}

所以我做了没有 AngularJS 开发者应该做的事,求助于 jQuery:

哪个像冠军一样工作......所以我的问题是:我们如何$.post()使用 AngularJS 复制上面的 jQuery 调用,$http()以便我们可以从 ASP.Net Web API 2 中基于 OWIN 中间件的 /token 端点获取访问令牌?

0 投票
1 回答
399 浏览

api - Web Api 2,在我的继承 Apicontroller 中声明始终为空

我在我的项目中使用 Web Api 2 Auth 模板。我想在客户端使用 Api Key 请求时获取用户 ID。我的问题是:

1 如何获取 api 客户端用户的 ID。

- 通过Api请求解决是对还是错?

- 或者直接在http头中取userId?

- 或者使用 Api 键从数据库中查询它?

2 我创建了继承自 ApiController 的 MyApiController,我想在其中获取声明。所以我在其中编写了一些代码。就像这样

我发现 MyApiController 中的声明为空。但是当我在动作控制器中这样做时,它有效吗?

0 投票
1 回答
1946 浏览

asp.net - 覆盖 ActionFilter 属性在 ASP.NET Web APi 2 中不起作用

我正在使用 ASP.NET WEB API 2 迁移现有的 Web 服务。

下面是我使用的一组过滤器

下面是覆盖之前的 ActionFilter 属性的代码

控制器的代码也在下面给出

可以看出,我已将验证会话置于类级别,并且对于一种方法,我想覆盖它。因此,对于第二种方法,我使用了 overrideSessionValidation。虽然

调用了 OverrideSessionValidation 的 FiltersToOverride,我看到也调用了 ValidateSession 的 onActionExcuting。我希望类过滤器 onActionExecuting 不应该被调用,因为我有 Override 相同的。

请让我知道是什么错误,以便我可以解决这个问题

感谢和问候文卡特什

0 投票
1 回答
1130 浏览

asp.net-web-api - 属性路由不适用于字典

作为属性路由的新手,我想寻求帮助以使其正常工作。

这个测试是一个简单的动态数据库表查看器:给定一个表名(或存储的查询名或其他)和一些可选的 WHERE 参数,返回查询结果。

表 COMPANIES(任意数量的表之一,其中一个关联的 SELECT 查询存储在某处,以表名为键):

控制器:

SQL 存储在某些资源或表中。显然参数必须完全匹配:

请求(应该看起来很干净,但确切的 URL 格式并不重要):

www.website.com/view/companies?hq=fin --> 404: 没有匹配的控制器 www.website.com/view/companies/hq=fin --> parameters为空 www.website.com/view/companies/hq=fin&name=nokia --> 异常:A potentially dangerous Request.Path value was detected from the client (&).

当我使用:[Route("view/{table}{parameters}")]我得到:

A path segment cannot contain two consecutive parameters. They must be separated by a '/' or by a literal string. Parameter name: routeTemplate. 说得通。

我的问题是:我如何以通常的形式接受表名 任意数量未知参数key1=val1&key2=val2不是这里提到的那样尴尬的索引格式),这些参数稍后将绑定到 SQL 参数,最好使用 vanilla 数据结构而不是类似的东西FormCollection