问题标签 [wcf-web-api]

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 回答
1241 浏览

asp.net-mvc - 同一服务器和端口上的 WCF REST Web API 和 MVC

我正在考虑组建一个基于 REST 的系统,该系统仍然具有标准的浏览器样式访问权限。我的愿望是将这两者都放在同一台机器上,但我有什么选择?

我的偏好是第三个选项,这将允许我拥有一个单一的代码库和单一的存储库访问。Codeplex 上的 WCF 页面在其发行说明中提到“未使用 MVC3 进行测试”——这是否表明这是一种可能的方法?

我并不热衷于将 MVC 用于 REST 实现,因为我的网站的大部分交互都是通过 API 进行的,所以我希望将其作为重点。

0 投票
5 回答
11490 浏览

javascript - Web 服务 API 密钥和 Ajax - 保护密钥

这可能是一个通用的安全问题,但我想我会问我正在开发的领域。

场景是:一个 Web 服务 (WCF Web Api),它使用 API 密钥来验证并告诉我用户是谁,以及前端的 jQuery 和应用程序的混合。

一方面,流量可以是 https,因此无法对其进行检查,但是如果我对每个用户使用相同的密钥(例如 guid),并且我在两者中都使用它,那么它就有可能被盗用并且有人可以冒充用户。

如果我实现类似于 OAuth 的东西,那么会生成一个用户和一个每个应用程序的密钥,这可以工作 - 但对于 jQuery 端,我仍然需要 javascript 中的应用程序 API 密钥。

如果有人在实际计算机上并进行了查看源,这只会是一个问题。

我应该怎么办?

  1. md5或以某种方式加密密钥?
  2. 把key放在一个session变量中,然后用ajax的时候检索呢?
  3. 克服它,这不是什么大问题/问题。

我敢肯定这可能是一个常见问题 - 所以欢迎任何指针。

为了让这一点更清楚- 这是我编写的我正在查询的 API,而不是谷歌等。所以我可以按会话令牌等做,我只是想找出保护客户端的最佳方法我会使用的令牌/密钥。

我在这里有点过于谨慎,但只是用它来学习。

0 投票
6 回答
6686 浏览

cross-domain - Access-Control-Allow-Origin 不允许 WCF Web API RESTful

好像我有跨域访问问题。我已经看到一些解决方案表明要添加“Access-Control-Allow-Origin:*”,但我不知道在哪里可以做到这一点。

我需要创建一些处理程序吗?

我正在使用 WCF Web API。

错误:XMLHttpRequest 无法加载http://localhost:8081/Song/0。Access-Control-Allow-Origin 不允许来源http://localhost:8080 。

编辑

我注意到这只发生在 HTTP 方法为 PUT 或 DELETE 时。我可以使用 GET 或 POST 成功发出请求。

我正在使用 jquery 发出请求。

我不知道为什么,但这似乎导致方法 OPTIONS 带有 Access-Control-Request-Method: DELETE。

有谁知道这是什么原因造成的?

任何帮助表示赞赏。

0 投票
1 回答
589 浏览

c# - WCF Web API 如何向每个端点添加参数

我有一个 WCF Web Api Restful 网络服务。

我希望每个服务调用都采用可选参数:suppress_status_codes。有没有办法在不向每个端点添加参数和处理的情况下做到这一点,例如:

suppress_status_code 的目的是用于 Flash 集成。如果 web 服务返回 200 闪存以外的任何内容,则无法处理消息正文,因此如果 supress_status_codes 为真,我需要能够在 HttpResponseMessage 中返回带有错误和错误状态代码的“200”。

由于这个原因,Twitter 的 api 具有相同的可选参数。

0 投票
2 回答
2759 浏览

c# - 更改 WCF WebApi HttpContent 响应

使用 WCF Web API 在应用程序逻辑运行后但在返回给用户之前,我将如何更改响应的内容主体。目标是如果 suppressstatuscontent 为真,我们:

  • 向内容正文添加状态码字段
  • 将响应中的状态码更改为 200

我已经覆盖了 DelegatingChannel 并且在 SendAsnyc 中有一些看起来像这样的代码:

一个主要问题是这不能处理 BOTH和. 我觉得必须有一个更好的方法来解决这个问题,因为这感觉很hacky。xmlJson

0 投票
1 回答
197 浏览

c# - Wcf Web API 沙盒端点处理

我有一个将公开公开的 api 并有一个沙箱。我已经在我的 ResourceFactory 中编写了一些代码,所以 api.sandbox.whatever/whatever 会起作用,并且参数中的 sandbox=true 也会起作用,但这感觉就像一个巨大的黑客攻击。有什么更好的方法吗?

这是我的代码:

0 投票
1 回答
1857 浏览

c# - C# Wcf Web API 反序列化响应

我正在尝试对返回非原语的 Web 服务进行单元测试。根据请求,响应可以是 xml 或 json。在我的测试中,如果我可以将内容主体反序列化为我的对象之一,那就太好了。这是一些代码:

我的测试:

所以基本上我需要能够将 result.Content 转换为 MyType 并且不知道如何。谢谢

0 投票
1 回答
1358 浏览

wcf - WCF WebApi 的自托管不接受 PUT 动词

我已经使用使用 PUT 动词的WCF WebAPI组合了一个 HTTP 驱动的 API。当托管在 IIS Express 上的 MVC3 项目中时,一切都按设计工作。

但是,当我进行单元测试时,我偶尔会想要测试传输方面,而不仅仅是针对我自己的资源。我的单元测试失败,出现 405 - MethodNotAllowed。同样,在 IIS 中托管的服务完全相同(我在配置文件中启用了 PUT 和 DELETE 动词)。

我怎样才能让测试中使用的“自托管”服务也接受这些动词?

几乎相同的“get”测试有效,所以我不希望以下概念有问题......希望......

在测试设置中,我正在使用以下 Autofac 代码准备端点(这同样适用于“Get”):

我的服务在以下接口中定义:

因此,例如,如果我有一个 MachineService,它会实现接口(两者class MachineService : IResourceService<string, Machine>都已... : IResourceService<int, Machine>经过试验 - Get = OK,Put = Nothing。

编辑:我似乎在 InternalServerError 和 MethodNotAllowed 错误之间弹跳 - 仅在使用自托管时。我已确保我作为用户有权打开端口(Win7 + 非管理员),但结果加上我选择的端口似乎对 Get 来说是可预测的功能。“邮政”似乎有类似的问题!:-(

EDIT2:界面现在已更改为哪个有效!

0 投票
1 回答
1208 浏览

wcf - WCF WebApi 如何将请求 URI 映射到适当的服务类型/操作?

WCF REST(和 WCF WebApi)如何将 Uri 映射到正确的服务端点?

在 WCF WebApi Preview 4 的上下文中:在自定义委派通道中,我想根据传入的 HttpRequestMessage.RequestUri 查找关联的路由前缀或服务类型。

例如,

假设有一个请求进入http://server/employees/John

  1. WCF 如何将其映射到正确的端点?

ResourceFactoryProvider被实例化时,它已经知道具体的服务类型。我似乎无法追踪 Uri 和路由表路由之间的解析发生位置。

非常感谢提前。

0 投票
3 回答
1202 浏览

c# - C# WCF Web API 问题发布/放置

我有一个看起来像这样的网络服务:

我的 global.asx 看起来像:

当我通过 C# HttpClient 或 fiddler 访问 Web 服务时,它会抛出 500,甚至无法访问我的方法。我添加了一堆日志记录并收到以下错误:

服务操作“PutSomeStuff”期望为输入参数“requestMessage”分配一个可分配给“String”类型的值,但接收到“HttpRequestMessage`1”类型的值。

更新:如果我将 TextToPut 变量设为自定义对象,它可以正常工作。如果它是像字符串这样的原始类型,它只会给我带来问题。