相关疑难解决方法(0)

无法使用WCF使用基本身份验证调用Web服务

我已经获得了一个用Java编写的Web服务,我无法对其进行任何更改.它要求用户通过基本身份验证进行身份验证才能访问任何方法.在.NET中与此服务交互的建议方法是使用安装了WSE 3.0的Visual Studio 2005.

这是一个问题,因为该项目已经在使用Visual Studio 2008(面向.NET 2.0).我可以在VS2005中做到这一点,但我不想将项目与VS2005联系起来,或者通过在VS2005中创建一个程序集来实现它,并将其包含在VS2008解决方案中(无论如何,该程序基本上将项目绑定到2005,以便将来对程序集进行任何更改).我认为这些选项中的任何一个都会通过强制他们安装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);
Run Code Online (Sandbox Code Playgroud)

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

HTTP请求未经授权,客户端身份验证方案为"匿名".从服务器收到的身份验证标头是"Basic realm = realm".

这有一个内在的例外:

远程服务器返回错误:(401)未经授权.

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

wcf web-services wcf-security .net-3.5

15
推荐指数
2
解决办法
5万
查看次数

标签 统计

.net-3.5 ×1

wcf ×1

wcf-security ×1

web-services ×1