问题标签 [protocolexception]

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

wcf - System.ServiceModel.ProtocolException 是否总是在其消息中包含 html 代码?

这就是我的问题,我在客户端上捕获了一些 WCF 异常,并且 ProtocolException 的消息中始终包含 html 代码。
我可以假设每次都会发生吗?对于我看到的真正好的消息来自内部异常,我可以丢弃 ProtocolException 消息并向用户显示来自内部异常的消息吗?

0 投票
2 回答
12315 浏览

wcf - 在客户端处理 WCF 服务重启

我有一个 GUI 客户端,它针对作为服务器盒上的 Windows 服务托管的WCF服务运行。WCF 服务在 PerCall InstanceContextMode 中运行,并且客户端有一个服务客户端的单例实例,我想避免在每次调用时重新实例化单例,因为这让我的许多异步调用变得困难。

我的问题是,在 Windows 服务重新启动后,每次客户端调用它都会收到如下异常消息:

此通道不能再用于发送消息,因为输出会话由于服务器启动的关闭而自动关闭。通过将 DispatchRuntime.AutomaticInputSessionShutdown 设置为 false 来禁用自动关闭,或者考虑使用远程服务器修改关闭协议。

解决这个问题的最佳方法是什么?我可以在对服务客户端的所有调用周围放置 try-catch 子句,并在通信异常时重新实例化单例实例,但这将涉及大量样板代码。

0 投票
6 回答
6623 浏览

.net - 从 WCF REST 获取错误详细信息

我有一个 .Net WCF 客户端使用的 REST 服务。

当遇到错误时,REST 服务会返回一个 HTTP 400 错误请求,其响应正文包含 JSON 序列化详细信息。

如果我使用 Fiddler、Javascript 或直接从 C# 执行请求,我可以在发生错误时轻松访问响应正文。

但是,我正在使用ChannelFactory具有 6 个非常复杂的接口的 WCF。这个代理抛出的异常总是 a ProtocolException,没有有用的细节。

当我收到此错误时,有什么方法可以获取响应正文?


更新

我意识到使用 .Net 有很多不同的方法可以做到这一点,并且还有其他方法可以获得错误响应。他们很有用,但不回答这个问题。

我们正在使用的 REST 服务会发生变化,并且当它们发生变化时,复杂的接口会得到更新。与新接口一起使用ChannelFactory意味着我们将获得编译时(而不是运行时)异常,并使这些更容易维护和更新代码。

使用 WCF 通道时,有什么方法可以获取错误 HTTP 状态的响应正文?

0 投票
2 回答
439 浏览

c# - C# 请求未超时

我有这段代码在 BackgroundWorker 中运行,应该向服务器发出 POST 请求并获得响应。它应该工作时工作正常,但是当我尝试引发 404 错误时,它不会捕获错误报告系统。

我已经对请求设置了超时,但它不起作用!这是一个错误,还是我在这里做错了什么?

谢谢

0 投票
1 回答
929 浏览

apache - 为什么 XML-RPC API 端点会随机抛出 ProtocolError -1?

我们围绕 Magento 的 XML-RPC API 构建了一个广泛的中间件系统。我们已经用 Python 封装了端点,并且正在进行大量的多重调用。

API 以看似随机的间隔响应

这是 Apache 说“503 服务不可用”的有趣方式吗?如果是这样,为什么会这样?

处理此异常的理想方法是什么?重试异常似乎会使问题变得更糟。

Web 服务器是带有 Suhosin-Patch 和 Zend Engine v2.3.0 的 Ubuntu 10.04.1 PHP 5.3.2-1ubuntu4.5 使用 Python 的 xmlrpclib 调用 API。

0 投票
2 回答
2741 浏览

wcf - WCF 奇怪的服务行为

我正在使用一个 wsHttpBinding 服务,该服务从现在开始运行良好。我的 WPF 应用程序(客户端)连接到它,并每 15 秒自动从服务器接收信息。

我注意到有时(偶尔,有些日子没有问题)我的客户会收到以下异常:

你知道在哪里解决这个问题吗?

谢谢,卡米尔。

0 投票
2 回答
5312 浏览

wcf - 使用自定义异常处理程序 EL WCF 引发 FaultException

所以我试图在我的 WCF 服务中使用企业库来为我做一些与异常相关的工作。

我的想法是为说“NullReferenceException”设置一个“自定义异常处理程序”,并在“自定义异常处理程序”中创建 FaultException 异常。

我的理解是,这个“新”异常将通过网络实现,我将在客户端捕获它。

一些代码可以更好地理解:

WCF 服务:

自定义异常处理程序:(企业库)

将 NullReferenceException 映射到“自定义异常处理程序”的应用程序配置文件:

最后是期望捕获此 FaultException 的客户端代码:

但相反,我得到一个 ProtocolException,说明需要回复操作:

收到操作“方法”的回复消息,操作为“”。但是,您的客户端代码需要操作“http://tempuri.org/MyService/MethodResponse”。

我究竟做错了什么?是否可以在“自定义异常处理程序”中返回(不显式抛出)带有自定义 FaultContract 的 FaultException?

任何建议表示赞赏。

更新: 如您所见,“自定义异常处理程序”中的后处理操作设置为“ThrowNewException”。如果我将其更改为“NotifyRethrow”,我将不再使用“ProtocolException”!相反,客户端会捕获常规的“FaultException”(不是自定义类型的)。

现在的问题是为什么原始的自定义类型的 FaultException 不能跨越网络。

更新 2 我忘记提及的一件事是我的 WCF 服务在 ServiceHost 中运行,而不是在 IIS 下运行。所以基本上我有一个 Windows 服务,它创建一个 ServiceHost 并通过这个 ServiceHost 公开 Service1 接口。

我认为这可能与此问题有关的原因是 Enterprise Library 声称它处理整个应用程序中的异常,而不仅仅是在服务边界内。也许这会导致异常被抛出为时已晚?还是不在正确的水平?

更新 3
感谢您的帖子!你是对的,我搞乱自定义处理程序的唯一原因是因为我想设置 MyFaultCode 值。我尝试了您的建议 - 配置了 2 个处理程序。

首先是一个自定义处理程序并捕获 NullReference 异常。它会引发一个新异常 - MyApplicationException,带有 MyFaultContract 字段。

然后我配置了第二个处理程序 - 内置的“Fault Contract Exception Handler”,它捕获 MyApplicationException,创建新的 FaultException 并自动将 MyFaultcontract 从 MyApplicationException 映射到新创建的 FaultException。

WCF 客户端仍然捕获通用的 FaultException,而不是自定义合同。

0 投票
1 回答
58 浏览

playframework - playframework ProtocolException 无效消息

我有一个有趣的现象:

如果我用这个控制器开始一个空白的 index.html 页面:

我没有看到索引页面,但得到了下载包含此内容的文件的提议:

这里有什么魔力?

0 投票
2 回答
32409 浏览

c# - Web 服务返回错误的内容类型响应标头

我正在尝试在 asp.net c# 应用程序中使用第三方 Web 服务(基于 php),但服务配置失败。已经尝试添加服务/Web 引用 - 所有相同的错误:

响应消息的内容类型 text/html 与绑定的内容类型 (text/xml; charset=utf-8) 不匹配。如果使用自定义编码器,请确保正确实现 IsContentTypeSupported 方法。响应的前 402 个字节是:'<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/ " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>;<. ..

[手动编辑响应以正确显示 > < 字符,否则完全有效]

对我来说,这似乎是一个完全有效的响应,我试图查看 fiddler 在响应标头中写入的内容 - Content-Type: text/html,这可能是问题的根源 - webservice 发送了错误的内容类型(改为 text/html text/xml) ,但如何配置我的客户端忽略/覆盖收到的内容类型?谷歌搜索什么都没有,所以请,如果有人可以帮忙 - 问题出在哪里?Binding\endpoint 配置是一个默认的 basicHttpBinding/endpoint,它是由 VS2010 在使用 Add Service Reference 选项时生成的,那里没有任何改变。提前致谢。

[应用程序配置]

0 投票
1 回答
654 浏览

java - 桌面客户端 Web 服务器通信

我正在做客户端服务器通信。我通过URLConnection课程得到了联系。

现在我正在尝试将登录信息发送到服务器,服务器将检查信息是否正确,否则它将要求我再次登录,对于这种情况,我们假设登录不成功。但是当我再次尝试发送登录信息时得到服务器的响应后,我得到了

这是我的代码: