Исключение олицетворения WCF в ASP.NET - PullRequest
0 голосов
/ 31 июля 2011

У меня есть решение, в котором приложение Silverlight вызывает службу WCF (самостоятельно размещенную в консольном приложении), которую мы будем называть A, которая вызывает другую службу WCF (размещенную в IIS), которую мы будем называть B.

Служба WCF A содержит два стандартных метода и один метод, который использует олицетворение и вызывает службу WCF B. У меня нет проблем при попытке вызвать службу WCF A из Silverlight, включая вызов с олицетворением, но когда я пытаюсь выполнить то же самое из приложения ASP.NET я получаю следующее исключение при вызове службы B WCF из методов олицетворения:

Не удалось загрузить файл или сборку 'System.IdentityModel.Selectors, версия = 3.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089 'или одна из ее зависимостей. Исключение из HRESULT: 0x80070542

Вот соответствующая часть моего web.config:

<system.serviceModel>
    <bindings>
        <customBinding>
            <binding name="CustomBinding_IPrint">
                <binaryMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
                    maxSessionSize="2048">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                </binaryMessageEncoding>
                <httpTransport manualAddressing="false" maxBufferPoolSize="524288"
                    maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Ntlm"
                    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
                    realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
                    useDefaultWebProxy="true" />
            </binding>
            <binding name="WebHttpBinding_IClientAccessPolicy">
                <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
                    messageVersion="Soap12" writeEncoding="utf-8">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                </textMessageEncoding>
            </binding>
        </customBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost:8733/ClientAppsWCF" binding="customBinding"
            bindingConfiguration="CustomBinding_IPrint" contract="ClientApps.IPrint"
            name="CustomBinding_IPrint">
            <identity>
                <userPrincipalName value="ytal@ifnsystems.com" />
            </identity>
        </endpoint>
        <endpoint binding="customBinding" bindingConfiguration="WebHttpBinding_IClientAccessPolicy"
            contract="ClientApps.IClientAccessPolicy" name="WebHttpBinding_IClientAccessPolicy" />
    </client>
</system.serviceModel>

Буду признателен, если кто-то может помочь мне с этим.

1 Ответ

1 голос
/ 01 августа 2011

Я не уверен насчет точной проблемы, но постараюсь помочь вам от подобных ошибок в отношении подражания.

Это могут быть некоторые вещи:

  1. Аутентификация Kerberos: поскольку ваша служба A размещается самостоятельно, она отправляет информацию о хосте службе B (в IIS).Попробуйте проверить в окне просмотра событий, на вкладках «Приложение» и «Безопасность», правильно ли зарегистрированы пользователи.Посмотрите, использует ли он Kerberos или NTLM.Если он возвращается к Kerberos, проверьте имя участника-службы и если пользователю доверяют делегирование в Active Diretory.

  2. Проверьте, правильно ли подписана сборка.

  3. Проверьте, имеет ли пользователь (хост A) разрешение на доступ к сборке, которую вы пытаетесь загрузить.

...