Сопоставление классического случайного числа ASP со случайным числом C # - PullRequest
2 голосов
/ 09 июля 2011

Немного странный вопрос.У меня есть веб-сайт, на котором есть несколько страниц в классическом ASP, а другие - в ASP.net.

У меня есть скрипт, который кэширует их граватарное изображение.Он размещен на домене без файлов cookie в одном из следующих мест:

http://static1.scirra.net
http://static2.scirra.net
http://static3.scirra.net
http://static4.scirra.net

Когда страница запрашивает граватар на моем ASP.net сайте, она проходит через эту функцию, которая распространяетэто случайным образом для статического сервера:

/// <summary>
/// Returns the static url for gravatar
/// </summary>
public static string GetGravatarURL(string Hash, int Size, int AuthorID)
{
    Random rndNum = new Random(AuthorID);
    int ServerID = rndNum.Next(0, 4)+1;

    string R = "//static" + ServerID.ToString() + ".scirra.net/avatars/" + Size + "/" + Hash + ".png";
    return R;
}

Функция в моих Classic ASP частях сайта:

function ShowGravatar(Hash, AuthorID)

    Dim ServerID

    Randomize(AuthorID)
    ServerID = Int((Rnd * 4) + 1)

    ShowGravatar = "//static" & ServerID & ".scirra.net/avatars/" & intGravatarSize & "/" & Hash & ".png"

end function

Работает нормально, запускается наID пользователя затем назначает им статический сервер для сервера их аватаров.Единственная проблема в том, что C # и Classic ASP RNG выводят разные результаты!Это не оптимально для кэширования, поскольку одно и то же изображение обслуживается на двух разных доменах.

Есть ли простой способ обойти это?

Ответы [ 2 ]

3 голосов
/ 09 июля 2011

Почему бы вам просто не использовать хэш граватар для определения сервера?Например, вы могли бы взять первый символ хэша gravatar по модулю 4.

3 голосов
/ 09 июля 2011

Генератор случайных чисел, который возвращает предсказуемое значение, называется хешем - предсказуемая случайность совсем не крута в генераторе случайных чисел: -)

Итак, заменим вызов rand какой-нибудь хэш-функцией ивсе готовоИспользуйте свое воображение: хеш-функция может быть чем-то простым, например, по модулю 4 кода авторизации.

...