Как мне использовать мою веб-ссылку в MVC? - PullRequest
2 голосов
/ 23 ноября 2011

приветствуя людей, мне нужно сослаться на внешний сервис в моем приложении 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 . Ни один из которых не возвращает объект Assertion , как в мире ASP.Net. Они оба имеют метод Validate , но возвращают ValidateAssertionResponse . Объект ответа не имеет каких-либо полезных свойств; просто тело ответа. Класс Assertion по-прежнему доступен, но, похоже, не возвращается ни одним из методов интерфейса.

Может кто-нибудь помочь мне, как правильно использовать один из этих интерфейсов?

спасибо

1 Ответ

7 голосов
/ 23 ноября 2011

Вместо добавления ссылки на службу добавьте веб-ссылку. Щелкните правой кнопкой мыши по вашему проекту, выберите «Добавить ссылку на службу ...». В диалоговом окне «Добавить ссылку на службу» нажмите «Дополнительно», затем нажмите «Добавить веб-ссылку». Это создаст прокси, подходящий для использования со службами на основе ASMX.

...