- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在将 WebHttpBinding 设置为基本身份验证 (HttpClientCredentialType.Basic) 的情况下使用 WCF 进行 POX REST 调用时出现问题
不是从具有 HTTP header 中指定的“Authorization: Basic”的客户端调用一次,而是进行两次调用。第一次调用完全没有身份验证,服务响应 401 Unauthorized 错误,第二次调用使用正确的身份验证信息。
这似乎是由 WCF 服务处理的,完全没有问题。调用第三方服务显然会产生问题,因为它们会立即响应错误。
服务代码:
[ServiceContract]
public interface IService
{
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml,
UriTemplate = "")]
Message SendData(Message message);
}
public class Service : IService
{
public Message SendData(Message message)
{ return Message.CreateMessage(MessageVersion.None, String.Empty, "test");
}
}
客户代码:
public class Client: WebChannelFactory<IService>, IService
{
public Client(Uri baseUri, string userName, string password)
: base(CreateBinding(),
baseUri)
{
Credentials.UserName.UserName = userName;
Credentials.UserName.Password = password;
}
public Message SendData(Message requestMessage)
{
var channel = CreateChannel();
Message responseMessage = channel.SendData(requestMessage);
return responseMessage;
}
private static Binding CreateBinding()
{
var binding = new WebHttpBinding();
binding.Security.Mode = WebHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
return binding;
}
}
使用 TcpTrace,我看到这些背靠背的请求:
POST / HTTP/1.1
Content-Type: application/xml; charset=utf-8
VsDebuggerCausalityData: uIDPo2lH6p+lUOdFmrqDKGWYeQkAAAAA7+Y4QR6wNUWZmwCaasMx7xrfcJZxph9NocstwCh8NQsACQAA
Host: localhost:9090
Content-Length: 89
Expect: 100-continue
Connection: Keep-Alive
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">test request</string>
POST / HTTP/1.1
Content-Type: application/xml; charset=utf-8
VsDebuggerCausalityData: uIDPo2lH6p+lUOdFmrqDKGWYeQkAAAAA7+Y4QR6wNUWZmwCaasMx7xrfcJZxph9NocstwCh8NQsACQAA
Authorization: Basic dGVzdDp0ZXN0
Host: localhost:9090
Content-Length: 89
Expect: 100-continue
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">test request</string>
注意只有第二次调用包含:Authorization: Basic dGVzdDp0ZXN0如何停止第一个请求(未经授权)?
可在此处下载带有 TcpTrace 实用程序的示例解决方案:
最佳答案
所以根据 Remus 的回答,这是我的解决方法
public Message SendData(Message requestMessage)
{
var channel = CreateChannel();
Message responseMessage;
using (new OperationContextScope((IClientChannel)channel))
{
WebOperationContext.Current.OutgoingRequest
.Headers[HttpRequestHeader.Authorization] = "Basic "
+ Convert.ToBase64String(Encoding.ASCII.GetBytes(
Credentials.UserName.UserName + ":" + Credentials.UserName.Password));
responseMessage = channel.SendData(requestMessage);
}
return responseMessage;
}
我只是强制第一个请求使用基本授权
关于xml - 使用 WebHttpBinding 设置为基本身份验证的 WCF 进行 POX REST 调用时双重请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1462256/
在 l3_learning.py 中,class l3_switch 中有一个名为 _handle_PacketIn 的方法。现在我明白了这个事件是当一个交换机在收到一个数据包时联系 Controll
这是我的代码: from pox.core import core import pox.openflow.libopenflow_01 as of from pox.lib.util import
我正在尝试从 POX Controller 中的 forwarding.l3_learning 示例中学习。 在过期处理程序中,如果缓冲区中的数据包时间过期,则从 Controller 中移除。 稍后
我正在尝试建立一个测试网络,其中我有一个交换机列表,并且一次只能激活其中一个。我已经在像这样工作的每个 ConnectionUp 事件上更新连接列表: def _handle_ConnectionUp
我是一个完全的 WCF 新手。我正在尝试构建部署一个非常非常简单的 IIS 7.0 托管 Web 服务。由于我无法控制的原因,它必须是 WCF 而不是 ASMX。它是预先存在的 Web 应用程序的包装
我真的无法区分 REST 和 POX Web 服务。我的意思是,不能将 POX 视为具有 XML 消息定义的 REST Web 服务吗? 最佳答案 这取决于您的“Plain Old XML”包含的内容
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
是否可以在交换机上安装一条规则,指示交换机执行以下操作: If packet_in is TCP: send ( dummy packet ) send (packet_in)
我正在尝试使用 POX Controller 创建一个 TCP 数据包,并且将其发送到其中一个交换机。 数据包是这样产生的: payload = "MESSAGE" t
我最近看到一些对 POX 或“普通旧 XML”的引用。是否有简化 XML 使用的运动? 维基百科 says : People typically use the term [POX] as a con
我正在尝试使用 POX Controller 向交换机添加流条目,我的代码是: fm = of.ofp_flow_mod() fm.match.in_port = 1 fm.p
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
我试图在同一个 WCF 服务中使用 SOAP 和 RESTful。除了一个问题,我也实现了这一点。以下是我的 web.config:
所以,我正在为一个已经存在的应用程序编写一个 Spring Web 服务来与之通信。我让服务工作到接收请求并响应请求的位置,但问题是,应用程序希望响应采用普通旧 XML (POX) 格式。我的响应当前
这就是我想要做的。 我们有一个 SSO 身份验证服务,其他面向外部的网页和服务使用它来对用户进行身份验证。用户尝试访问服务,如果没有找到包含身份验证 token 的 cookie,他们将被重定向到 S
这是代码 import pox.lib.packet as pkt from pox.lib.packet import * def _handle_PacketIn(self,event): p
在将 WebHttpBinding 设置为基本身份验证 (HttpClientCredentialType.Basic) 的情况下使用 WCF 进行 POX REST 调用时出现问题 不是从具有 HT
我正在尝试使用 python 编写一个 Pox Controller 。环境搭建使用Mininet,交换机类型为ovsk(open vswitch)。对于每个单独的交换机,一些端口连接到主机,一些连接
我有一组使用 IErrorHandler 包装异常的 SOAP Web 服务,特别是: public sealed class ErrorHandler : IErrorHandler { p
我是一名优秀的程序员,十分优秀!