Børre Stenseth

Litt om noe

Usystematisk og basert på spørsmål som dukker opp


Noen situasjoner

Validation of viewstate MAC failed. ....

Raporter på Internett beskriver denne feilen under litt forskjellige betingelser. Det skyldes så vidt jeg forstår at rekkefølgen når siden lastes blir gal slik at Viewstate ikke kan valideres når det forrlanges. Valideringen betyr at det sjekkes om forespørselen kommer fra samme sted. En måte å unngå det på er å legge inn følgende linje under <system.web> i web.config - fila.

<pages enableEventValidation="false" enableViewStateMac="false" viewStateEncryptionMode="Never"/>

Vi skrur altså av kontrollen av at siden friskes opp fra samme sted som den opprinnelig ble kalt. Dette kan ha sikkerhetsmessige konsekvenser.

Hvordan..


... får jeg tak i en datafil som ligger i min prosjektfolder ?

Under testing og utvikling lages exe-fila i bin\Debug\ og vi må lage stier til datafiler som tar dette som utgangspunkt.

Det kan du gjøre på flere måter:

  1. Legge fila til prosjektet (add existing item)
  2. Gi den egenskapen at den skal "Copy to output directory"
  3. Aksessere den fra koden med:
    String filename=Path.Combine(Application.StartupPath,"minfil.txt")

eller:

  • Aksessere den fra koden direkte med
    String filename=Path.GetFullPath(Path.Combine(Application.StartupPath,"..\\..\\minfil.txt"))
    Dette har den fordelen at fila kan oppdateres fra programmet mens du driver testing og utvikling.

eller:

  • Du kan vurdere å ta den inn som en egenskap, property, til programmet, og adressere innholdet i den slik;
    Properties.Resources.minfil

... får jeg tak i en datafil som ligger i en katalog i en website ?

String physicalPath = HttpContext.Current.Server.MapPath(".").ToString();
String filename = physicalPath + "\\App_Data\\minfil.txt";
 

... oppretter jeg et DOM-tre fra en fil ?

 using System.XML;
 ...
 XmlDocument doc=new XmlDocument();
 doc.Load(adresse);
 

der adresse kan være en Url eller en filsti.


... leser jeg en textfil fra en URL ?

 using System.Net;
 ...
 WebClient loader = new WebClient();
 String S=loader.DownloadString("http://www.it.hiof.no/~borres/commondata/latin/ordtak.txt");
 

... leser jeg en annen fil fra en URL ?

koden nedenfor henter et bilde (chart) fra google og legger det ut i en picturebox

 using System.Net;
 ...
WebClient loader = new WebClient();
try
{
    // set query parameters
    loader.QueryString.Add("chl","I|II|III|IV|V|VI");
    loader.QueryString.Add("chs","300x300");
    loader.QueryString.Add("cht","p");
    loader.QueryString.Add("chco","BBBB00,BB0000");
    loader.QueryString.Add("chds","0,1000");
    loader.QueryString.Add("chd","t:57,119,318,637,532,315");
    loader.QueryString.Add("chtt", "Terningkast for viner");
    
    // download to file
    loader.DownloadFile("http://chart.apis.google.com/chart",
        filename);
    // show it
    pictureBox1.Image = Image.FromFile(filename);
}
 

... kjøre en 32bits applikasjon på en 64bits server ?

koden nedenfor viser et eksempel på kjøring av Prince på donau fra en vevside

string SOURCE_PATH = physicalPath + @"\output.html";
string STYLE_PATH = physicalPath + @"\App_Data\report.css";       
String ARGUMENTS = String.Format("{0} -s {1}", SOURCE_PATH, STYLE_PATH);
//ProgramFilesX86 in stead of ProgramFiles
PRINCE_PATH =
    Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) +
    @"\Prince\Engine\bin\prince.exe";

Process PP = new Process();    
// false is necessary here
PP.StartInfo.UseShellExecute = false;
PP.StartInfo.FileName = PRINCE_PATH;
PP.StartInfo.Arguments = ARGUMENTS;
PP.StartInfo.CreateNoWindow = true;
try
{
    PP.Start();
    PP.WaitForExit();
}
catch (Exception ex)
{
    ...
}
(Velkommen) (Indeks)