DNS-имя хоста не работает, потому что многие серверы имеют несколько имен хостов, и вы не знаете, на каком из них была вызвана служба. IIRC, IIS могут вызывать различные веб-службы, в зависимости от того, какое имя хоста было указано, что еще больше ухудшает ситуацию. Использование .Current прекрасно, если вы не запускаете ни одного экземпляра, и в этом случае у вас не всегда есть ненулевой объект контекста, что является моим случаем для всего перечисленного. Если у кого-нибудь есть что-то более солидное, поделитесь:)