Когда я вызываю http: //localhost/TestService.svc/GetColors, я получаю неверный запрос Http (400). Когда я запускаю это в скрипте, я также получаю неверный запрос. Когда я вызываю службу через тестовый клиент wcf, она работает нормально. Что могло вызвать это?
Контракт на обслуживание:
[ServiceContract]
public interface ITestService
{
[OperationContract]
string GetColors();
}
Реализация ITestService:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
public class TestService : ITestService
{
public List GetColors()
{
List colors= new List();
colors.Add(new Color { Name = "Red", Code = "123" });
colors.Add(new Color { Name = "Blue", Code = "323" });
colors.Add(new Color { Name = "Green", Code = "3394" });
return colors;
}
}
Вот мой файл web.config:
Когда я вызываю его, я просто открываю любой браузер и помещаю URL http: //localhost/TestService.svc/GetColors
. Если я сделаю это через среду разработки, я увижу неверный запрос Http 400. Если я сделаю это через IIS, я просто увижу пустую страницу.
Вот InnerException:
System.Xml.XmlException: The body of the message cannot be read
because it is empty.
Другой вопрос относительно моего CustomUserNameValidation:
Я реализую настраиваемую проверку с помощью метода проверки UserNamePasswordValidator, но когда я вызываю что-то вроде GetColors через клиент wcf, он не вызывает метод Validate. Единственный способ получить его для Invoke validate - это вызвать Validate (user, pass) непосредственно в GetColors. Я думал, что он будет вызываться автоматически при каждом обращении в службу поддержки, если вы правильно настроите его в web.config.