Я использую службу WCF REST с шаблоном ключа API и пытаюсь обеспечить проверку с помощью проверки атрибута блока приложения проверки. вот мой сервис:
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
[ValidationBehavior]
public class Service1
{
[FaultContract(typeof(ValidationFault))]
[WebGet(UriTemplate = "ValidateStuff?text={text}")]
public void ValidateStuff(
[NotNullValidator]
string text)
{
}
и global.asax из шаблона:
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
private void RegisterRoutes()
{
// Edit the base address of Service1 by replacing the "Service1" string below
RouteTable.Routes.Add(new ServiceRoute("Service1", new WebServiceHostFactory(), typeof(Service1)));
}
}
то у меня есть клиент, отправляющий запрос GET:
HttpWebRequest invokeRequest = WebRequest.Create(String.Concat(baseUrl, "/", uri, queryString)) as HttpWebRequest;
invokeRequest.Method = Enum.GetName(typeof(Method), method);
WebResponse response = invokeRequest.GetResponse())
теперь проблема в том, что я каждый раз получаю HTTP/1.1 500 Internal Server Error.
если я удалю атрибуты [ValidationBehavior] [FaultContract(typeof(ValidationFault))] и [NotNullValidator], тогда все будет работать нормально. Я проверил сервисную трассировку и не увидел ничего, что могло бы мне помочь.