【问题标题】:Using a different service contract for DotNetOpenAuth为 DotNetOpenAuth 使用不同的服务合同
【发布时间】:2012-04-03 14:07:03
【问题描述】:

最近我工作的公司决定使用 DotNetOpenAuth 来授权想要使用我一直在开发的某个 Web 服务的用户。

现在,我已经启动并运行了一个 SOAP Web 服务,并且我还运行了来自 DotNetOpenAuth 的 OAuthConsumer 和 OAuthServiceProvider 示例。 Web 服务、消费者和服务提供者都在 IIS7 上运行,每个都在自己的站点中。

我的问题是,如何从我的 web 服务的数据合同中调用方法,而不是从 DotNetOpenAuth 的 IDataApi 数据合同中调用方法?

我需要构建新版本的 DataApi 类吗?在这种情况下,这个新类应该扩展到什么(而不是 IDataApi)?

谢谢!

【问题讨论】:

    标签: asp.net web-services dotnetopenauth datacontract


    【解决方案1】:

    IDataApi 只是示例中的[ServiceContract]。您应该改用描述您的服务的接口。这是基于 WCF 的 SOAP 服务吗?如果是这样,只需使用您的界面即可。

    如果您使用 WCF,那么您使用的框架将决定如何连接到其授权系统,并且可能使您的实现与示例的实现完全不同。但是使用 DotNetOpenAuth 应该仍然可以工作。

    【讨论】:

    • 谢谢你,这让我想到了正确的方向,但不幸的是我还没有完全做到。该服务确实是一个基于 WCF 的 SOAP 服务,运行在 IIS7 上。服务和服务提供者在端口 810 上运行,消费者也在 IIS 7 上但在端口 811 上运行。在本地调试代码时,我收到以下错误:'消息无法处理,因为操作'websrv.hszuyd.nl:810/ITimeTableWebService/getTimeTable ' 无效或无法识别。有什么方法可以验证是否使用了正确的操作?还是我做错了?
    • 您在申请 OAuth 授权之前是否收到此错误?如果您还没有尝试过,请从那里开始。让您的 WCF 服务和使用者正常工作,然后对其应用 OAuth 授权,这样您就有了工作的基础。
    • 啊,这有帮助。它仍然没有完全工作,但最初的问题已经解决。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    相关资源
    最近更新 更多