2

大家好,我需要在我的 MVC 应用程序中引用一个外部服务。

我正在使用此服务来验证我们的一位客户要求我们使用的身份验证令牌。

我正在将一个较旧的项目移植到 MVC。我添加了一个网络参考。

配置是这样生成的:

<system.serviceModel>
<bindings>
    <basicHttpBinding>
        <binding name="ExternalServicesSoap" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
            maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
            useDefaultWebProxy="true">
            <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
            <security mode="None">
                <transport clientCredentialType="None" proxyCredentialType="None"
                    realm="" />
                <message clientCredentialType="UserName" algorithmSuite="Default" />
            </security>
        </binding>
    </basicHttpBinding>
</bindings>
<client>
    <endpoint address="http://myapps.test.com/ExternalServices/ExternalServices.asmx"
        binding="basicHttpBinding" bindingConfiguration="ExternalServicesSoap"
        contract="AssertionService.ExternalServicesSoap" name="ExternalServicesSoap" />
</client>

在旧的 ASP.NET 世界中,我可以使用外部服务引用中定义的 Assertion 对象对我引用的特定服务执行以下操作。

        var service = new ExternalServices();
        Assertion assertion = service.Validate(Id);
        if(assertion.Valid){}

这似乎不是 MVC 项目中的确切情况。我似乎正在使用 WCF。我不确定我是否在 MVC 世界中正确地处理了这个问题。

我只需要使用ExternalServiesSoap接口或ExternalServicesSoapChannel接口。没有一个像在 ASP.Net 世界中那样返回Assertion对象。它们都有Validate方法,但返回一个ValidateAssertionResponse。响应对象没有任何有用的属性;只是一个响应体。Assertion类仍然可以访问,但似乎没有任何接口方法返回它。

谁能帮助我如何正确使用这些界面之一?

谢谢

4

1 回答 1

7

与其添加服务引用,不如添加 Web 引用。右键单击您的项目,选择“添加服务引用...”。在“添加服务引用”对话框中,单击“高级”,然后单击“添加 Web 引用”。这将生成一个适合与基于 ASMX 的服务一起使用的代理。

于 2011-11-23T16:18:22.143 回答