Использование для MachineKey в ASP.NET

Это объединяет все подходы, описанные до сих пор. Он также обрабатывает сценарии с несколькими мониторами.

Передайте вид скриншота, который вы хотите, и TJpegImage, и он присвоит ваш запрошенный снимок экрана этому изображению.

///////////
uses
  Jpeg;

type  //define an ENUM to describe the possible screenshot types.
  TScreenShotType = (sstActiveWindow, sstActiveClientArea,
    sstPrimaryMonitor, sstDesktop);
///////////

procedure TfrmMain.GetScreenShot(shotType: TScreenShotType;
  var img: TJpegImage);
var
  w,h: integer;
  DC: HDC;
  hWin: Cardinal;
  r: TRect;
  tmpBmp: TBitmap;
begin
  hWin := 0;
  case shotType of
    sstActiveWindow:
      begin
        //only the active window
        hWin := GetForegroundWindow;
        dc := GetWindowDC(hWin);
        GetWindowRect(hWin,r);
        w := r.Right - r.Left;
        h := r.Bottom - r.Top;
      end;  //sstActiveWindow
    sstActiveClientArea:
      begin
        //only the active client area (active window minus title bars)
        hWin := GetForegroundWindow;
        dc := GetDC(hWin);
        GetWindowRect(hWin,r);
        w := r.Right - r.Left;
        h := r.Bottom - r.Top;
      end;  //sstActiveClientArea
    sstPrimaryMonitor:
      begin
        //only the primary monitor.  If 1 monitor, same as sstDesktop.
        hWin := GetDesktopWindow;
        dc := GetDC(hWin);
        w := GetDeviceCaps(DC,HORZRES);
        h := GetDeviceCaps(DC,VERTRES);
      end;  //sstPrimaryMonitor
    sstDesktop:
      begin
        //ENTIRE desktop (all monitors)
        dc := GetDC(GetDesktopWindow);
        w := Screen.DesktopWidth;
        h := Screen.DesktopHeight;
      end;  //sstDesktop
    else begin
      Exit;
    end;  //case else
  end;  //case

  //convert to jpg
  tmpBmp := TBitmap.Create;
  try
    tmpBmp.Width := w;
    tmpBmp.Height := h;
    BitBlt(tmpBmp.Canvas.Handle,0,0,tmpBmp.Width,
      tmpBmp.Height,DC,0,0,SRCCOPY);
    img.Assign(tmpBmp);
  finally
    ReleaseDC(hWin,DC);
    FreeAndNil(tmpBmp);
  end;  //try-finally
end;
16
задан BenMaddox 15 February 2009 в 02:38
поделиться

3 ответа

MachineKey используется для:

  • шифрование ViewState и проверка
  • Аутентификация Форм (или Федеративная Аутентификация) используют этот ключ для подписания билета

аутентификации, устанавливающего веб-приложение на нескольких серверах, требует, чтобы тот же Ключ Машины, настроенный на всех них для Выравнивания нагрузки, работал.

Для наблюдения всех деталей обратитесь к: MSDN, Как К: Настройте MachineKey в ASP.NET 2.0

20
ответ дан 30 November 2019 в 17:05
поделиться

Ключ машины также используется для шифрования/дешифрования webresources.axd параметров.

Даже на единственном сервере ключ машины должен быть настроен, потому что любой перерабатывает домена приложения, генерирует новый ключ, когда он установлен на автоматический. Это вызывает следующую обратную передачу только для страниц, представленных перед перерабатыванием, для порождения ошибки проверки состояния отображения, и также выходит с ресурсами в течение того времени.

17
ответ дан 30 November 2019 в 17:05
поделиться

Шифрование - очень распространенный.

-3
ответ дан 30 November 2019 в 17:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: