Postupy: Předvídání podmínek nedostatku místa v rámci izolovaného úložiště
Kód, který používá izolované úložiště je omezen quota, která určuje maximální velikost datové přihrádky, ve které existují soubory a adresáře izolovaného úložiště. Tato hodnota je definována zásadami zabezpečení a mohou ji konfigurovat správci. Pokud je překročena maximální povolená velikost při pokusu o zapisování dat, je vyvolána IsolatedStorageException a operace se nezdaří. To pomáhá zabránit škodlivým útokům odmítnutí služby, které by mohly způsobit odmítat požadavky, protože je vyplněn ukládání dat aplikace. Vám pomohou určit, zda je pravděpodobné, že z tohoto důvodu nezdaří pokus o zápis dané IsolatedStorage Třída poskytuje tři vlastnosti pouze pro čtení: AvailableFreeSpace, UsedSize a Quota. Tyto vlastnosti lze určit, zda maximální povolenou velikost úložiště překročení způsobí zápis do úložiště. Použijete-li tyto vlastnosti, uvědomte si, že k izolovanému úložiště může být přistupováno současně. Proto, pokud spočítáte zbývající množství úložiště, úložný prostor může být spotřebován v době pokusu o zápis do úložiště. Toto vám však nezabrání v používání maximální velikosti úložiště pro určení, zda se již blíží dosažení horního limitu dostupného úložiště.
Dalším důležitým aspektem je, že IsolatedStorage.Quota Vlastnosti závisí na důkazy ze sestavení správnou. Proto by tato vlastnost načíst pouze v IsolatedStorageFile objekty vytvořené pomocí GetUserStoreForAssembly, GetUserStoreForDomain, nebo GetStore metody. IsolatedStorageFileobjekty vytvořené jiným způsobem (například objekty, které nebyly vráceny GetEnumerator Metoda) nevrátí přesné maximální velikost.
Příklad
Následující příklad kódu získává izolované úložiště vytváří několik souborů a načítá AvailableFreeSpace vlastnost. Zbývající prostor je hlášena v bajtech.
Imports System
Imports System.IO
Imports System.IO.IsolatedStorage
Public Class CheckingSpace
Public Shared Sub Main()
' Get an isolated store for this assembly and put it into an
' IsolatedStoreFile object.
Dim isoStore As IsolatedStorageFile = _
IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
IsolatedStorageScope.Assembly, Nothing, Nothing)
' Create a few placeholder files in the isolated store.
Dim aStream As New IsolatedStorageFileStream("InTheRoot.txt", FileMode.Create, isoStore)
Dim bStream As New IsolatedStorageFileStream("Another.txt", FileMode.Create, isoStore)
Dim cStream As New IsolatedStorageFileStream("AThird.txt", FileMode.Create, isoStore)
Dim dStream As New IsolatedStorageFileStream("AFourth.txt", FileMode.Create, isoStore)
Dim eStream As New IsolatedStorageFileStream("AFifth.txt", FileMode.Create, isoStore)
Console.WriteLine(isoStore.AvailableFreeSpace + " bytes of space remain in this isolated store.")
End Sub ' End of Main.
End Class
using System;
using System.IO;
using System.IO.IsolatedStorage;
public class CheckingSpace
{
public static void Main()
{
// Get an isolated store for this assembly and put it into an
// IsolatedStoreFile object.
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly, null, null);
// Create a few placeholder files in the isolated store.
new IsolatedStorageFileStream("InTheRoot.txt", FileMode.Create, isoStore);
new IsolatedStorageFileStream("Another.txt", FileMode.Create, isoStore);
new IsolatedStorageFileStream("AThird.txt", FileMode.Create, isoStore);
new IsolatedStorageFileStream("AFourth.txt", FileMode.Create, isoStore);
new IsolatedStorageFileStream("AFifth.txt", FileMode.Create, isoStore);
Console.WriteLine(isoStore.AvailableFreeSpace + " bytes of space remain in this isolated store.");
} // End of Main.
}
using namespace System;
using namespace System::IO;
using namespace System::IO::IsolatedStorage;
public ref class CheckingSpace
{
public:
static void Main()
{
// Get an isolated store for this assembly and put it into an
// IsolatedStoreFile object.
IsolatedStorageFile^ isoStore = IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
IsolatedStorageScope::Assembly, (Type ^)nullptr, (Type ^)nullptr);
// Create a few placeholder files in the isolated store.
gcnew IsolatedStorageFileStream("InTheRoot.txt", FileMode::Create, isoStore);
gcnew IsolatedStorageFileStream("Another.txt", FileMode::Create, isoStore);
gcnew IsolatedStorageFileStream("AThird.txt", FileMode::Create, isoStore);
gcnew IsolatedStorageFileStream("AFourth.txt", FileMode::Create, isoStore);
gcnew IsolatedStorageFileStream("AFifth.txt", FileMode::Create, isoStore);
Console::WriteLine(isoStore->AvailableFreeSpace + " bytes of space remain in this isolated store.");
} // End of Main.
};
int main()
{
CheckingSpace::Main();
}
Viz také
Odkaz
Koncepty
Postupy: Získání úložiště pro izolované úložiště
Historie změn
Datum |
Poslední dokumenty |
Důvod |
---|---|---|
Prosinec 2010 |
Přidány informace o AvailableFreeSpace vlastnost. |
Rozšíření informace |