На внутреннем объединении они имеют в виду то же самое. Однако Вы получите различные результаты во внешнем объединении в зависимости от того, если Вы вставите условие объединения ГДЕ по сравнению с НА пункте. Смотрите на этот связанный вопрос и этот ответ (мной).
я думаю, что это имеет большую часть смысла быть в привычке к всегда вставлению условия объединения НА пункте (если это не внешнее объединение, и Вы на самом деле хотите его в, где пункт), поскольку это делает его более ясным любому читающему Ваш запрос, на каких условиях таблицы присоединяются, и также это помогает препятствовать тому, чтобы оператор Where был десятками строк долго.
То, что вы пытаетесь сделать, это передать учетные данные через базовую аутентификацию HTTP, я не уверен, поддерживается ли синтаксис имени пользователя: пароля в HttpListener, но если это так, вам понадобится чтобы указать, что вы сначала принимаете базовую аутентификацию.
HttpListener listener = new HttpListener();
listener.Prefixes.Add(uriPrefix);
listener.AuthenticationSchemes = AuthenticationSchemes.Basic;
listener.Start();
После получения запроса вы можете извлечь имя пользователя и пароль с помощью:
HttpListenerBasicIdentity identity = (HttpListenerBasicIdentity)context.User.Identity;
Console.WriteLine(identity.Name);
Console.WriteLine(identity.Password);
Вот полное объяснение всех поддерживаемых методов аутентификации, которые можно использовать с HttpListener.
Получить заголовок Авторизация
. Его формат следующий
Authorization: <Type> <Base64-encoded-Username/Password-Pair>
Пример:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Имя пользователя и пароль разделяются двоеточиями (в этом примере Aladdin: open sesame
), затем закодированы в B64.
Сначала вам нужно включить базовую аутентификацию:
listener.AuthenticationSchemes = AuthenticationSchemes.Basic;
Затем в методе ProcessRequest вы можете получить имя пользователя и пароль:
if (context.User.Identity.IsAuthenticated)
{
var identity = (HttpListenerBasicIdentity)context.User.Identity;
Console.WriteLine(identity.Name);
Console.WriteLine(identity.Password);
}