Это нормально. В веб-сервисе WCF нет HTTP-контекста. Служба WCF может даже не размещаться на веб-сервере. Вы можете разместить внутри консольного приложения. Есть хитрость, которая позволяет вам установить режим совместимости ASP.NET :
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
но я бы не советовал вам это делать.
Я бы сделал это вместо:
var postData = "username=" + HttpUtility.UrlEncode(USERNAME);
И поскольку у меня есть седьмое представление о том, куда вы идете с этим кодом (отправка его в виде HTTP-запроса на удаленный веб-сервер), давайте перейдем непосредственно к вопросу:
using (var client = new WebClient())
{
var values = new NameValueCollection
{
{ "username", USERNAME }
};
var result = client.UploadValues("http://foo.com", values);
}