2011-12-28 75 views
0

我有一个ASP.NET MVC 3项目,并负责实施一些UI控件。我需要调用一些Web服务并将数据绑定到UI控件。问题是Web服务主机(我们无法控制它们)要求我首先实现一个UsernameToken类(WSE 2.0)来认证用户并生成安全令牌。我知道WSE 2.0在2006年被WCF取代。我不想切换回VS 2005来使用WSE 2.0。我有什么选择?ASP.NET MVC 3和WSE 2.0

感谢您的帮助!

回答

0

恐怕Darin Dimitrov的方法行不通。我最终完成的工作是安装WSE 2.0,然后将dll引用添加到WSE installtion目录(c:\ Program Files(x86)\ Microsoft WSE \ v2.0 \ Microsoft.Web.Services2.dll)中找到的​​。我还修改了服务的Reference.cs文件以从Microsoft.Web.Services2.WebServicesClientProtocol继承。我能够找到UsernameToken类,并且能够成功进行身份验证。

我不是这方面的专家,所以我不确定这是否是这样做的正确方法,但它仍然有效。

0

只需在您的ASP.NET MVC应用程序中添加一个Service Reference,并将其指向Web服务WSDL。这将生成一个与WSE兼容的强类型WCF客户端。这里的an article涵盖了不同的互操作性场景

+0

感谢您的快速回复。我读过你链接的文章,并且关注这个问题 - “在理论上可以使用WSE 2.0开发Web服务,以便它们可以通过仅使用一组简化的规范与WSE 3.0(和WCF)进行互操作特别是SOAP 1.1,WSDL 1.0和WS-Security 1.0,但是在这种情况下,Microsoft不支持互操作性,规划与WCF互操作性最安全的方法是将WSE 2.0代码升级到WSE 3.0。我有多个WSDL? – tempid 2011-12-28 13:14:30

+0

就像例如,我有'http:// xxx/WSLogin.asmx'和'http:// xxx/GetData.asmx'。我需要为'WSLogin'和'GetData'添加_two_ WSDL服务引用吗?如果这是一个新手问题,我以前没有这么做过,所以很抱歉。 – tempid 2011-12-28 13:19:49

+0

@ user349308,在这种情况下,您可以使用['svcutil.exe'](http://msdn.microsoft.com/zh-cn/library/aa347733.aspx)命令行工具生成强类型客户端代理。它允许你指定多个服务URL:'svcutil.exe http://xxxx/WSLogin.asmx http:// xxx/GetData.asmx'。很显然,这两种服务之间通用的类将仅在客户端创建一次。 – 2011-12-28 13:21:36