[ASP .NET] Wyświetlanie obrazów i losowanie stringów

0

Cześć, mam dwa problemy.
Pierwszy z nich związany jest z tworzeniem unikalnej nazwy pliku(unikalnego stringa). Teraz robię to tak:

public static string GetUniqueString(int strLen)
{
    if (strLen < 12) strLen = 12;

    Random r = new Random();
    string resStr = DateTime.Today.Day.ToString() +
                    DateTime.Today.Month.ToString() +
                    DateTime.Today.Year.ToString();

    while (resStr.Length < strLen)
    {
        resStr += Convert.ToChar(r.Next(97, 123));  
    }

    return resStr;
}

Gdy wywołuję tą funkcję 3 razy z rzędu, to za każdym razem dostaję tego samego stringa.
Czemu?

Drugi problem jest taki.
Chcę wyświetlić sobie zdjęcie będące na serwerze:

Image1.ImageUrl = Server.MapPath("../photos/") + res["photo1"].ToString();

Jaki jest rezultat? Brak obrazka. Gdy klikam na kwadracik reprezentujący obrazem prawym klawiszem myszy i wybieram właściwości, to widzę jedynie nazwę pliku(bez ścieżki). Ale w wygenerowanym kodzie strony jest wyraźnie:

<img id="Image1" src="D:\Projekty%20internetowe\sandra\sources\photos\532009urefgt.jpg" style="border-width:0px;" />

Czyli poprawna ścieżka. O co chodzi?

0
Juhas napisał(a)

Gdy wywołuję tą funkcję 3 razy z rzędu, to za każdym razem dostaję tego samego stringa.
Czemu?

Bo za każdym razem tworzysz nową instancje generatora liczb pseudolosowych, a jak wiadomo tak się nie robi. Random r powinien być jeden na całą klasę, natomiast w metodach powinieneś jedynie wołać np. jego metodę Next().

A co do generowania losowych nazw plików, to nie lepiej?

string unikalnaNazwaPliku = System.IO.Path.GetRandomFileName();
0

poza tym random ma te ceche, ze sie w koncu 'zawinie'.. jak chcesz rzeczywiscie unikatowy numer - dla kazdego dnia, zacznij od zera i lec przyrostowo co oczko.. jak myslisz ze moze byc kolizja z czyms co juz istnialo, przekanuj katalog, poszukaj nazw, okresl ostatni numer danego dnia i heja dalej.
albo to co mowi somekind
..albo GUID.. tam masz tak male szanse na zawiniecie sie, ze pewnie w ogole zapomnisz o takiej mozliwosci

1 użytkowników online, w tym zalogowanych: 0, gości: 1