使用WCF无法通过基本认证调用Web服务

使用WCF无法通过基本认证调用Web服务,第1张

概述我已经获得了一个用 Java编写的Web服务,我无法进行任何更改.它要求用户使用基本身份验证来访问任何方法.在.NET中与此服务交互的建议方法是使用安装了WSE 3.0的Visual Studio 2005. 这是一个问题,因为该项目已经在使用Visual Studio 2008(针对.NET 2.0).我可以在VS2005中做到这一点,但是我不想将项目绑定到VS2005,也可以通过在VS2005 我已经获得了一个用 Java编写的Web服务,我无法进行任何更改.它要求用户使用基本身份验证来访问任何方法.在.NET中与此服务交互的建议方法是使用安装了WSE 3.0的Visual Studio 2005.

这是一个问题,因为该项目已经在使用Visual Studio 2008(针对.NET 2.0).我可以在VS2005中做到这一点,但是我不想将项目绑定到VS2005,也可以通过在VS2005中创建一个程序集,包括VS2008中的一个程序集).我认为这两个选项中的任何一个都会使新开发人员变得复杂,迫使他们安装WSE 3.0,并使项目能够在将来使用2008和.NET 3.5中的功能…即我真的相信使用WCF是要走的路

我一直在研究使用WCF,但是我不确定如何让WCF服务了解它需要发送身份验证头以及每个请求.当我尝试对Web服务做任何事情时,我遇到401错误.

这是我的代码看起来像:

WebhttpBinding webBinding = new WebhttpBinding();ChannelFactory<MyService> factory =      new ChannelFactory<MyService>(webBinding,new EndpointAddress("http://127.0.0.1:80/Service/Service/"));factory.Endpoint.Behaviors.Add(new WebhttpBehavior());factory.Credentials.Username.Username = "username";factory.Credentials.Username.Password = "password";MyService proxy = factory.CreateChannel();proxy.postsubmission(_postsubmission);

这将运行并抛出以下异常:

The http request is unauthorized with clIEnt authentication scheme ‘Anonymous’. The authentication header received from the server
was ‘Basic realm=realm’.

这有一个例外:

The Remote Server returned an error: (401) Unauthorized.

任何关于可能导致这个问题的想法将不胜感激.

解决方法 第一个问题:这是一个SOAP或基于REST的Java服务,您正在尝试调用

现在,使用“webhttpBinding”,您正在使用基于REST的方法.如果Java服务是SOAP服务,那么您需要将绑定更改为“basichttpBinding”.

如果是一个基于SOAP的服务,你应该尝试这样做:

BasichttpBinding binding = new BasichttpBinding();binding.SendTimeout = TimeSpan.FromSeconds(25);binding.Security.Mode = BasichttpSecurityMode.Transport;binding.Security.Transport.ClIEntCredentialType =                               httpClIEntCredentialType.Basic;EndpointAddress address = new EndpointAddress(your-url-here);ChannelFactory<MyService> factory =              new ChannelFactory<MyService>(binding,address);MyService proxy = factory.CreateChannel();proxy.ClIEntCredentials.Username.Username = "username";proxy.ClIEntCredentials.Username.Password = "password";

我已经使用它与各种Web服务,它的工作 – 大部分时间.

如果不行,那么你必须了解更多有关Java Web服务预期的内容,以及如何发送相关信息.

渣子

总结

以上是内存溢出为你收集整理的使用WCF无法通过基本认证调用Web服务全部内容,希望文章能够帮你解决使用WCF无法通过基本认证调用Web服务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1100543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存