Das Problem ist, das Server Controls in ASP.NET keinen direkten Bezug auf die Dateien des Webservers haben.
Wenn, z.B. ein Image Control das Property “ImageUrl” mit “~/image /test.jpg” gefällt wurde. Kann das Kontrol in der DLL äber “Server.MapPath(ImageUrl)” nicht darauf zugreifen. Schuld daran ist, dass die Objkete
- Server
- Response
- Request
- Einige Properties von “Page”
im DesignMode “NULL” sind.
Wie geht’s dennoch?
Die Interfaces ISite, IWebApplication und IProjectItem helfen da weiter.
Folgender Source sollte Weiterhelfen:
1 IWebApplication webApp =(IWebApplication)
2 Site.GetService(typeof(IWebApplication));
3
4 string imageUrl = “~/images/sample.txt”;
5 IProjectItem item =
6 webApp.GetProjectItemFromUrl(imageUrl);
7
8 string physicalFileName = item.PhysicalPath;
Diesen Weg hab ich im Blog vom Armen Ayvazyan gefunden.