#c# #wcf #authentication #https
#c# #wcf #аутентификация #https
Вопрос:
Я создал службу WCF: HelloWorldService следуйте советам в Внедрении службы HelloWorld, затем размещенной в IIS 8.5 (Windows 8.1) с базовой аутентификацией
и мой web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<system.serviceModel>
<serviceHostingEnvironment >
<serviceActivations>
<add factory="System.ServiceModel.Activation.ServiceHostFactory"
relativeAddress="./HelloWorldService.svc"
service="MyWCFServices.HelloWorldService"/>
</serviceActivations>
</serviceHostingEnvironment>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpsGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MyWCFServices.HelloWorldService">
<endpoint address="" binding="basicHttpBinding"
contract="MyWCFServices.IHelloWorldService"
bindingConfiguration="secureHttpBinding">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name ="secureHttpBinding">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
</configuration>
Я публикую успешную попытку в браузере и захожу под своим именем пользователя и паролем. Это сработало
Но ошибка при добавлении ссылки на службу, я не могу сделать это с тем же именем пользователя и паролем на VS2013. Я много раз пытаюсь ввести имя пользователя и пароль, но снова возвращаю диалоговое окно и должен нажать Нет.
Это подробности:
Произошла ошибка при загрузке https://localho.st/HelloWorldSecure/HelloWorldService.svc/_vti_bin/ListData.svc /$metadata Запрос выполнен с ошибкой со статусом HTTP 400: неверный запрос. Метаданные содержат ссылку, которая не может быть разрешена: https://localho.st/HelloWorldSecure/HelloWorldService.svc HTTP-запрос неавторизован с использованием схемы аутентификации клиента ‘Anonymous’. Заголовок аутентификации, полученный от сервера, был «Basic realm =mylocalhost». Удаленный сервер вернул ошибку: (401) неавторизованный. Если служба определена в текущем решении, попробуйте создать решение и добавить ссылку на службу снова.
Кто-нибудь, помогите мне сделать это правильно. Большое спасибо!
Комментарии:
1. Вы пробовали изменить аутентификацию на анонимную или Windows, прежде чем пытаться добавить ссылку? Как только вы получили ссылку, вы можете изменить аутентификацию обратно на basic.
2. О, спасибо, я пробую аутентификацию в Windows, она работает правильно, но я вернулся к Basic и запустил service, он возвращает исключение
3. Вам необходимо установить учетные данные в клиенте, прежде чем совершать вызов. Можете ли вы опубликовать код, который вы используете для подключения к службе?
4. @Tim Я не могу добавить ссылку на службу, не забудьте установить учетные данные