У меня есть сайт asp.net, на котором размещается служба WCF.Затем эта служба доступна из настольного приложения.В моем сервисе HttpContext всегда имеет значение null во время выполнения метода Validate в моей реализации класса UserNamePasswordValidator.Я использую имя пользователя в качестве типа учетных данных клиента.Мне нужен доступ к контексту http, чтобы получить URL-адрес, с которого был получен доступ к сервису, чтобы правильно проверить имя пользователя и пароль, так как к сайту можно обращаться по разным URL-адресам, и у каждого из них свое хранилище.
Следующий атрибут в классе, который содержит метод, который будет вызываться после класса валидатора (и также класса валидатора)
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
У меня служба настроена следующим образом:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="wsHttpSecurityOptions">
<security mode="Message">
<message clientCredentialType="UserName" establishSecurityContext="true" negotiateServiceCredential="true"/>
<transport clientCredentialType="Certificate" proxyCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="SecurityServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="WCFServer.MyAuthenticator" includeWindowsGroups="false"/>
<serviceCertificate findValue="myurl.com" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="SecurityServiceBehavior" name="Test.WCF.Actions">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsHttpSecurityOptions" contract="WCFServer.IActions"/>
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
Я видел, что HttpContext не инициализируется при ошибке первого вызова , но это происходит со мной при каждом обращении к службе, даже когда я вызываю один и тот же метод в том же соединении болееоднажды
Редактировать: уточненный вопрос для ответа на комментарий marc_s и вопрос Алиостада
Редактировать: Добавлены следующие ссылки, которые указывают, что http-контекст не должен быть нулевым
Кто-нибудь может мне помочь, пожалуйста?Я бы предпочел не указывать URL-адрес сайта в разделе конфигурации appSettings для всех моих сайтов.