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