问题标签 [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 投票
3 回答
754 浏览

wcf - 如何在带有 Windows 身份验证的 REST 中使用 WCF 服务中的机器名称

我们正在开发许多托管在 IIS 中的 WCF 服务。(在 Windows Server 2003 SP2 上运行的 IIS 6.0)。这些服务是为 REST 设置的。对于环境(DEV、CERT、PROD),我们通常在每个 IIS 服务器上有许多服务。每个服务都有自己的登录帐户,通过应用程序池分配。

这很好用,但是如果我们在虚拟目录上启用 Windows 身份验证(以允许用户上下文传递,而不是模拟或委托),我们会在特定情况下遇到安全错误。如果我们使用 ServiceEndpoint 连接到 C# 代码中的服务,它可以工作,但是当我们通过浏览器或非 Wcf 代码(例如 HttpWebRequest、java 等)连接到服务时,我们会收到安全错误。

如果我将 IIS 中的身份验证从协商、NTLM 更改为 NTLM,那么它就可以工作。真正发生的事情是我们正在禁用 Kerberos,并且由于这些服务与网络中的其他服务器通信,我们开始遇到服务无法连接到远程服务器(通常是 SQL Server)的其他问题。

现在这是奇怪的部分,如果我们给机器一个 DNS 别名(CNAME 记录)并将 URL 与它的别名一起使用。例如

我们不能为所有这些机器提供 DNS 别名(这一直是我们目前的解决方案),因为我们开始广泛使用虚拟机并让它们上下运转。所以我们只有机器名称,我们不想在机器启动时开始编写 DNS 别名脚本。

现在我知道了 SPN 问题,但是,由于我们在同一个网站(通常是默认网站)上托管了多个服务,我们只能为每个服务器/帐户创建 1 个服务主体名称。由于我们为每台服务器托管多个服务,每个服务都映射到自己的帐户,因此这不是解决方案。

另一个问题,我们没有在配置文件中定义端点,只在代码中,这里是获取 REST 绑定的代码。

0 投票
2 回答
1347 浏览

wcf - WCF 中的自定义 JSON IErrorHandler 在应返回 400 时返回 StatusCode 200/504

我有一个 WCF 服务,除了其他绑定之外,它还使用 WebHttpBinding 来处理 JSON 输入/结果。

我做了一个自定义的 IErrorHandler 实现,以便能够在出现问题时将 StatusCode 设置为 400 并返回 JSON 可理解的消息。这是随处可见的直接实现(这里描述的好方法)。

我的问题是:当我使用 Visual Studio Web Development Server (Cassini) 在本地测试它时,它运行良好。但是,当我将它部署到我的测试服务器(具有 IIS 标准配置的 Windows 2008 和其他一切)时,它不起作用。

当我调用它并使用 Firebug 进行调试时,我得到一个 HttpStatusCode 200 作为返回并且没有响应文本。使用 Fiddler,我得到一个 HttpStatusCode 504 并且根本没有回报。但是,我期望的行为(以及本地发生的情况)是调用带有 responseText 集的 ajax 调用的错误回调。

我远程调试了它,一切看起来都很好。执行管道正常,所有类都被调用,因为它们应该就像它们在本地一样,但它不起作用。

有什么建议么?我几乎没有办法解决这个问题。

非常感谢!

0 投票
1 回答
311 浏览

ajax - 我是否需要做任何特别的事情来使 WCF 调用通过 HTTPS 工作,..如果 HTTP 工作正常?

我有同一个概念验证网站的两个版本:不安全版本:

http://www.tlsadmin.com/tlsadmin/PortalHome.aspx

和安全版本:

https://www.tlsadmin.com/tlsadmin/PortalHome.aspx

我遇到的问题是我的基于 WCF 的 Web 服务似乎无法在 HTTPS 下运行。有什么我遗漏或不了解的吗?我认为 SVC 文件的相对 URL 将涵盖所有内容

也许我需要为 web 服务添加一个额外的绑定才能通过 HTTPS 工作?

0 投票
2 回答
362 浏览

ajax - “未找到基地址”-在 GoDaddy 上部署 WCF 服务时出错

我正在尝试部署 WCF 服务,但我很难让最后的部分工作。无论如何,我都不是部署专家,所以请多多包涵。

我正在使用 WebHttpBinding 使用 JSON 对服务进行 Ajax 调用,但我收到错误消息:“找不到与绑定 WebHttpBinding 的端点的方案 http 匹配的基地址。注册的基地址方案是 []。”。

这是我的 web.config 的片段:

我做了很多改变并尝试了很多选择,以至于我真的失去了对我正在做的事情的概述。我希望你能找到让这一切正常工作的那个小错误。

谢谢你。

0 投票
2 回答
13811 浏览

c# - WCF 中的 WebHttpBinding:如何正确配置它?

尝试按照此示例使其工作:http ://weblogs.asp.net/kiyoshi/archive/2008/10/08/wcf-using-webhttpbinding-for-rest-services.aspx

这是我的App.config

更新:服务合同是:

问题是,当我尝试连接到 8787 端口(putty例如使用 )时,会返回“连接被拒绝”错误。如您所见,我还尝试在合同类和服务实现中输入错误的名称,并且没有出现异常。请问我做错了什么?

0 投票
3 回答
561 浏览

.net - 使用 webHttpBinding 从服务中获取 Gibberish 而不是 Hello World

这是一个应该返回“Hello World”字符串的简单示例。但是,浏览器会显示类似SGVsbG8gV29ybGQ=. 从 oldskul 风格的服务返回纯文本的正确方法是什么?

请知道:

  1. 我无法返回字符串:三个 Unicode 字符将被自动添加到前面,旧的 HTTP 客户端将无法互操作。

  2. 我可以返回 a Message,但仍然必须保持解析功能来提取data变量。AFAIK 不允许在同一方法签名中 混合Message和键入。int

    p>

更新:这不是乱码,而是正确编码的响应。但是,格式不是我期望收到的。我已经发现(正如下面的先生所建议的那样)传输层消息格式的最终​​控制是通过Message类获得的。但是,如果我确实使用了一个 - 我失去了解析请求(UriTemplate属性)的可能性。因此,很高兴知道如何MessageUriRequest.

PS如果“干净”集成是不可能的 - 那么最优雅的解决方法是什么?请问是否有任何代码可以在我的实现中借用和使用的线幕后面完成?

0 投票
3 回答
241 浏览

wcf - 将 json 传递给 WCF webHTTP 服务时我们应该注意什么?

我在尝试从我的 jQuery 代码发送一个将 JSON 对象传递给我的 webservice 方法的发布请求时遇到了很多麻烦。

我知道这个问题似乎毫无意义,但我想知道 WCF 如何识别 JSON 字符串并将其转换为对象。我们应该配置什么来保证它应该工作?

我关注了几个这样的页面和博客文章,但我无法让它工作。每次命中服务代码时,参数都以空对象的形式出现!

我们应该注意的任何建议、提示、内部工作原理?

0 投票
1 回答
3184 浏览

wcf - WebHttpBinding 未到达客户端

我创建了一个 Web 服务,我试图为其提供 3 个具有不同绑定的端点。1.basicHttpBinding,2.wsHttpBinding,3.webHttpBinding

当我进行服务引用时,我只获得了创建了 basicHttpBinding 和 wsHttpBinding 绑定的端点。我没有得到 webHttpBinding。什么可能是错的。

这是 web.config 中 serviceModel 节点的结构。

0 投票
1 回答
1510 浏览

wcf - WCFStorm 是否支持调用启用了 JSON 的 WCF 服务?

我们有启用 JSON 的 WCF 服务,并且在使用 WCFStorm 调用这些服务时遇到问题。如果我们关闭 JSON,那么我们就不会收到错误消息。我们收到的错误如下。我们发现与 WSHTTPBinding 有关。

你调用的对象是空的。

我们发现 WcfStorm 无法工作,因为它不支持 WebHttpBinding。 http://www.wcfstorm.com/wcf/Forums/Thread.aspx?pageid=19&mid=26&ItemID=2&thread=59&pagenumber=1

有谁知道如何使它工作?因为我们喜欢使用它。

或者是否有其他工具可以测试 SOAP 和 JSON 以及允许性能测试和保存脚本?

谢谢

0 投票
1 回答
636 浏览

wcf - 服务路由中的参数

在 WCF webhttp 项目上工作,并且对路由组合中的参数有疑问。

我有两个服务 - 项目服务(允许用户添加和查看项目)和一个项目服务,允许用户查看项目内的项目。一个项目中可以有多个项目。

我想要表单的网址

localhost//projects//addproject

localhost//projects//{projectid}//item//additem

localhost//projects//{projectid}//item//getitem//{itemid}

我有两个服务 ItemService 和 ProjectService。Itemservice 有方法 additem 和 getitem Projectservice 有方法 addproject

如何在我的全球路线中声明这些服务?我试过了

RouteTable.Routes.Add(new ServiceRoute("projects/{projectid}/item", new WebServiceHostFactory(), typeof(ItemService))); 这给了我一个错误

我可以将所有代码添加到 ProjectService 但为了代码的可维护性我希望同时拥有 ProjectService 和 ItemService