问题标签 [webhttpbinding]

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 投票
1 回答
2440 浏览

wcf - 流式 webHttpBinding 未流式传输

我需要创建 WCF REST 服务来上传大文件。我将端点设置为流式 webHttpBinding,但它没有流式传输。

服务示例:

网络配置:

客户端代码:

方法 UploadFile 的代码只有在 requestStream.Close() 被调用后才会被调用。为什么?

0 投票
1 回答
1840 浏览

wcf - Asp.net 会话似乎不适用于 WCF WebHttpBinding

我们正在做一个 WCF REST json 服务 (WebHttpBinding)。由于纯 WCF 会话不适用于这种绑定,因此我们使用的是 asp.net 会话。所以我们设置:

在我们的 web.config 中,并且:

在我们的服务实施之上。我们有几种服务方式,例如:

然后我们在每个方法中测试HttpContext的sessionId。

问题是:它总是在变化。如果我在我的网络浏览器中调用OpenSession?userName='toto',然后再调用 GetSomething?somethingId=1234,会话 ID 将会改变。

wcf 似乎没有很好地处理 cookie。如果我在提琴手中调用 OpenSession 方法,则在 http 标头中,服务没有返回“Set-Cookie”。

0 投票
1 回答
1411 浏览

jquery - 使用 json.net 将 JSON 返回到 JScript 的最佳方法

我正在使用 WCF 返回一个 JSON,webHttpBinding以便可以将 JQuery 用于某些网格。今天,我正在查询数据库,并得到一个回复​​,并使用 Linq,用我需要的字段DataTable填充一个,然后我使用它序列化它,以便我可以将它作为字符串返回给客户端。下面是实现的片段:List<DTO>SerializeObject

在接口方面,以下是配置:

返回的是一个需要解析的 JSON 字符串,使用 parseJSON

这是返回 JScript 客户端使用的 JSON 结果的最佳/正确方法吗?有没有办法返回字符串以外的东西,并避免解析?

编辑

在客户端,我使用的是 MVC3,而不是 ASP.NET Web 窗体。Tks

0 投票
1 回答
600 浏览

c# - 使用 WebHttpBinding 通过 HTTP 从 SQL 传输表格数据的绝对最快方法

使用 WCF 端点通过 HTTP 传输 SQL 表格数据的最快方法是什么?

现在我正在使用 ESQL 查询实体框架,然后将 DataTable 结果序列化为一个字节 [],然后将其发送过来,然后在另一端反序列化,这似乎很慢。现在,15000 多行的序列化数据的大小约为 4000 字节。我还尝试了 OData 服务,但这也很慢。

与 JSON 相比,我认为它是最快的 - 一个仅包含 1048 个 SQL 行的 JSON 文件大约有 200000 个字节。数据大小与通过 HTTP 传输的速度之间是否存在直接关联?(似乎很直观,但我并不积极)。

最快的格式是什么?我正在考虑使用 SQLDataReader 到 JSON 并将 JSON 发送过来,我认为它应该表现良好,但我不确定。这仅用于数据同步目的。

谢谢。

编辑 做了一些更多的跟踪,看起来我的一些初始测量是错误的。请参阅下面的相应方法(以毫秒为单位)。

2011 年 7 月 11 日星期一下午 6:42:23: :函数“反序列化”持续时间。已用时间:481 毫秒

2011 年 7 月 11 日星期一下午 6:42:23 : : 函数“HttpRequest”持续时间。已用时间:4776 毫秒

2011 年 7 月 11 日星期一下午 6:42:22::DataTable 长度(字节)= 13047247 字节

上面引用的 DataTable 包含约 7000 行,看起来很陡峭,对吧?

0 投票
1 回答
1302 浏览

c# - 从 AJAX 服务返回大型 JSON 文件 - WCF

我有一个返回 JSON 的基于 AJAX 的 WebGet 方法。它不适用于几千行的 JSON 结果(如果我只取 100 行左右,它可以工作)。我注意到浏览器只是停止并且没有任何反应,没有任何信息显示 Firebug 控制台:

这是我对 WCF 的服务器端配置:

这是我正在应用的 webHttpBinding 配置:

这是最终的行为:

在我看来,一切都已用尽,它应该可以工作,我可能会错过什么?

0 投票
2 回答
1415 浏览

wcf - 从 WCF 服务访问 HTTP 标头

我需要访问要从 WCF 服务返回给客户端的 HTTP 响应标头。访问 HTTPContext 很容易(通过 HttpContext.Current.Response),但是当 StatusCode 已经设置时(例如,如果状态为 500),最后执行的事件/扩展/行为是什么?

编辑:消息检查器在这里似乎不是一个好的解决方案,因为在它们运行时,状态代码尚未设置。(至少在我的审判中是这样的)

0 投票
2 回答
2145 浏览

wcf - WCF 找不到 netTcpBinding

我正在尝试创建一个可通过 webHttpBinding 和 netTcpBinding 访问的 WCF 服务。我已经成功地让 webHttpBinding 可以通过 Java 客户端访问,现在我正在努力让 netTcpBinding 正常工作。

我已经设置了这样的配置;

在同一个解决方案中,我有一个希望连接到 netTcpBinding 的测试应用程序,我右键单击“服务引用”并选择“添加服务引用...”。当我点击“发现”时,它虽然说找到了服务;

下载“http://localhost:8732/Design_Time_Addresses/MR_Jukebox_Service”时出错。请求失败,HTTP 状态为 404:未找到。元数据包含无法解析的引用:“http://localhost:8732/Design_Time_Addresses/MR_Jukebox_Service”。在http://localhost:8732/Design_Time_Addresses/MR_Jukebox_Service上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。远程服务器返回错误:(404) Not Found。如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。

但我也无法看到 netTcpBinding 以便我创建对它的服务引用。

我想知道是否有人能看到我做错了什么,因为它可能相当简单,但由于我缺乏 WCF 经验,所以没有注意到。

感谢您提前提供任何帮助。

0 投票
2 回答
1885 浏览

wcf - 托管在 Windows 服务中的 WCF 单例中的计时器(通过 webHttpBinding)意外死亡

我有一个托管在 Windows 服务中的 WCF 服务(在本地系统下运行)。我在里面运行一个 System.Timer。初始化 Timer的操作o1是通过 webHttpBinding 的 http 端点声明的。我为 System.ServiceModel 启用了跟踪,并从 .svcLog 文件中检查了操作 o1 的侦听持续时间。它表明,在运行大约 20 小时后,http 端点处的侦听刚刚停止。

我认为这是因为没有传入消息到达该端点。这里的问题是监听停止,我的计时器(在那个特定的操作o1中初始化)也停止了!

有没有推荐的方法来保持监听器,因此计时器,长时间保持?我们可以定期 ping o1 操作以将其保存在内存中吗?

另外,我在操作 o1 中初始化的计时器变量是一个实例变量,即使侦听器关闭,这个变量是否也应该在内存中(WCF 是单例)?

非常感谢。

代码摘录-


编辑:从 System.Timers 命名空间更改为 System.Threading 命名空间并增加定时间隔为我修复了它。计时器变量不再消失。

0 投票
2 回答
4500 浏览

c# - 使用 WebHttpBinding 为 WCF 服务定义“app.config”

我有一个 WCF 服务,它允许在不使用 MessageContract 的情况下上传文件。

我可以在 Stream 对象旁边使用另一个参数,因为它是 UriTemplate 的一部分。由于该服务作为托管 Windows 服务运行,因此我必须手动启动 ServiceHost。

有了所有这些,服务启动并正常工作。但是我想将上面的一些内容移到 app.config 文件中。为此,我注释掉了的第二行OnStart并将第一行替换为FileServiceHost = new ServiceHost(typeof(FileService)). 然后我将该信息添加到 app.config ...

突然服务无法启动。FileServiceHost.Open它在该方法上抛出此异常OnStart:“对于将操作 UploadFile 中的请求作为流,该操作必须有一个类型为 Stream 的参数。”

我在 app.config 中定义服务的方式一定有问题,因为当我从那里删除它时,一切正常。我在这里做错了什么?

0 投票
1 回答
609 浏览

erlang - 使用会话 PID 和 JID 提取 SID

我正在尝试找到一种使用 PID 和 JID 提取 bosh 会话(ejabberd)的 SID 的方法,以便我可以在其中使用它ejabberd_sm:unset_presence,我到处搜索但找不到方法。

基本上,我已经使用 Ejabberd 和 Strophe 构建了一个聊天系统,我想要实现的是当用户按下一个页面上的脱机按钮时,与该 JID 关联的所有会话都需要脱机,我已经通过使用提取了 PID,ejabberd_sm:get_session_pid但可以'找不到提取 SID 的方法。我也尝试过SID ! Disconnect,但这会完全断开我不想要的用户。

如果有人做过这种工作,请帮助我,也欢迎其他实现此类工作的想法。

谢谢