Momenteel ben ik,ter oefening, weer eens een website voor mezelf aan het maken.
Ik maak nu gebruik van LINQ to SQL en heb een mapping.xml en mapping.cs bestand aangemaakt. Hierin staan logischerwijs de mappings naar de database en de objecten die ik in m'n projecten kan gebruiken.
In m'n data-access maak ik gebrtuik van de volgende code:
In de datacontext stop ik de connectiestring en de locatie waar het XML mapping-bestand staat. Dit bestand is toegevoegd in het 'Information packages' project, samen met het CS mapping bestand.
Het XML-bestand wordt altijd meegenomen tijdens compilatie, waardoor deze in de bin-directory komt te staan van de presentatie-laag.
Probleem dat ik nu heb is dat er geen bestanden uit de bin-directory mogen worden gelezen/geladen.
Wanneer je in de browser de URL intikt krijg je deze fout:
HTTP-fout 404.8 - Not Found
De oplossing zou moeten zijn om de hiddenSegments aan te passen in het IIS configuratie bestand
Het is uiteraard geen probleem om dit lokaal te doen, maar een wenselijke oplossing is het natuurlijk niet. Wanneer ik de website live zet kan ik natuurlijk niet het configuratie bestand bij m'n hoster aanpassen, aangezien die ook nog wel andere websites heeft draaien. Plus, het is een redelijk 'lek' in de standaard beveiliging van IIS lijkt me.
Een andere work-around is om het XML-mapping bestand in de root of een andere map te plaatsen. Dit lijkt me echter ook niet wenselijk, aangezien andere mensen dan zo je gehele database mapping bestand kunnen uitlezen. Ik kan me voorstellen dat dit ook een potentieel lek is in je website/database.
M'n vraag is dus of iemand ook een goede oplossing heeft voor dit probleem? Voor lokaal zou ik het op kunnen lossen door de hiddenSegments aan te passen of iets dergelijks, maar de uitgangssituatie is dat het bij een webhoster moet gaan draaien, waar ik zelf dus niet IIS instellingen kan gaan wijzigen.
Via Google kon ik weinig vinden met de zoekstring iis7 c# read file from bin directory en variaties daarop.
Ik maak nu gebruik van LINQ to SQL en heb een mapping.xml en mapping.cs bestand aangemaakt. Hierin staan logischerwijs de mappings naar de database en de objecten die ik in m'n projecten kan gebruiken.
In m'n data-access maak ik gebrtuik van de volgende code:
code:
1
2
3
4
| String xmlMappingFile = System.Configuration.ConfigurationManager.AppSettings["VirtualRoot"].ToString() + @"bin/WeblogMapping.xml"; String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; DataContext ctx = new DataContext(connectionString, XmlMappingSource.FromUrl(xmlMappingFile)); |
In de datacontext stop ik de connectiestring en de locatie waar het XML mapping-bestand staat. Dit bestand is toegevoegd in het 'Information packages' project, samen met het CS mapping bestand.
Het XML-bestand wordt altijd meegenomen tijdens compilatie, waardoor deze in de bin-directory komt te staan van de presentatie-laag.
Probleem dat ik nu heb is dat er geen bestanden uit de bin-directory mogen worden gelezen/geladen.
Wanneer je in de browser de URL intikt krijg je deze fout:
HTTP-fout 404.8 - Not Found
De oplossing zou moeten zijn om de hiddenSegments aan te passen in het IIS configuratie bestand
code:
1
2
3
4
5
6
7
| Meest waarschijnlijke oorzaken:
* Het filteren van aanvragen wordt geconfigureerd voor de webserver en deze bevat een sectie hiddenSegments zodat de serverbeheerder de toegang tot specifieke mappen kan weigeren.
U kunt het volgende proberen:
* Controleer de instellingen voor configuration/system.webServer/security/requestFiltering/hiddenSegments in het bestand applicationhost.config of web.config. |
Het is uiteraard geen probleem om dit lokaal te doen, maar een wenselijke oplossing is het natuurlijk niet. Wanneer ik de website live zet kan ik natuurlijk niet het configuratie bestand bij m'n hoster aanpassen, aangezien die ook nog wel andere websites heeft draaien. Plus, het is een redelijk 'lek' in de standaard beveiliging van IIS lijkt me.
Een andere work-around is om het XML-mapping bestand in de root of een andere map te plaatsen. Dit lijkt me echter ook niet wenselijk, aangezien andere mensen dan zo je gehele database mapping bestand kunnen uitlezen. Ik kan me voorstellen dat dit ook een potentieel lek is in je website/database.
M'n vraag is dus of iemand ook een goede oplossing heeft voor dit probleem? Voor lokaal zou ik het op kunnen lossen door de hiddenSegments aan te passen of iets dergelijks, maar de uitgangssituatie is dat het bij een webhoster moet gaan draaien, waar ik zelf dus niet IIS instellingen kan gaan wijzigen.
Via Google kon ik weinig vinden met de zoekstring iis7 c# read file from bin directory en variaties daarop.
Battle.net - Jandev#2601 / XBOX: VriesDeJ