У меня есть контроллер WebApi со способом, который выглядит так:
[HttpGet]
[AcceptVerbs("GET")]
public HttpResponseMessage Run(string reportName, int someId, string someText, DateTime asOfDate, string username)
У меня есть настраиваемый маршрут, настроенный специально для этого действия. Когда я перемещаю свой браузер в веб-службу, все работает нормально, и выполняется соответствующее действие:
http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected]
Однако, когда я пытаюсь программно вызвать веб-службу с помощью HttpClient и выполнить "Get", я получаю ошибку 404. Я не получаю сообщение об ошибке, когда параметр имени пользователя не является адресом электронной почты. Например, когда имя пользователя просто "пользователь", все работает нормально. Вот пример кода:
var url = "http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected]"
var client = new System.Net.Http.HttpClient();
var response = client.Get(url);
//fails here with 404 error
response.EnsureSuccessStatusCode();
Я пробовал UrlEncoding адрес электронной почты без везения. Любые советы приветствуются.