[SBS2003] IIS6 en downloaden van bestanden

Pagina: 1
Acties:

  • GerEielts
  • Registratie: Augustus 2005
  • Laatst online: 09-05-2024
Hi, ik haal een Worddocument binnen van een SBS2003-server(IIS6) met de volgende VB-code:

Dim instance As HttpWebRequest = WebRequest.Create("http://<URL>/" & "TEST.doc")
instance.Method = "GET"
Dim WebResp As HttpWebResponse = instance.GetResponse()

Dim StreamAnswer As IO.Stream
StreamAnswer = WebResp.GetResponseStream()
Dim sss As New IO.StreamReader(StreamAnswer)
RTBExtraGegevens.Text = sss.ReadToEnd

Ik ontvang TEST.doc, maar als ik de inhoud van het bestand lees zie ik:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<!-- Served by: www -->
<HTML>
<HEAD>
<!-- START INCLUDED HEADERS -->
<TITLE>U bent niet gemachtigd om deze pagina te bekijken</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=windows-1252">

<!-- END INCLUDED HEADERS -->
</HEAD>
<frameset rows="0,*" frameborder="0" border=0 framespacing="0">
<frame name="" src="/empty.php">
<frame name="" src="http://<URL>/TEST.doc" marginwidth="0" marginheight="0" scrolling="Auto" frameborder="no" framespacing="0">
<NOFRAMES>
<BODY>
<P>This frameset document contains:
<UL>
<LI><A href="<URL>/TEST.doc">http://<URL>/TEST.doc</A>
</UL>
</BODY>
</NOFRAMES>
</frameset>
</HTML>

Iemand een idee hoe dit komt? En wat ik aan moet passen op de server om de "echte" inhoud van TEST.doc te verkrijgen ??? (IIS6 MIME-types staat op application/octet-stream). Volgens mij moet de browser op de client het Save-as/uitvoeren Window openen of zo ?

gr. Ger.

  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Die melding is volgens mij een 403 ... En de VB code lijkt me trouwens VB.Net.
Je MIME-types staan goed, want zonder een mapping voor de .doc files had je een 404 gekregen.
Vermoedelijk mis je gewoon user-authenticatie in je code. Wat krijg je als je de Url in je browser aanroept ? Een login-popup of direct een foutmelding ? Kijk in dat geval ff naar de NTFS rechten op de files en dir en naar de rechten/authenticatie-methode in IIS.

'Political Correctness is fascism pretending to be good manners.' - George Carlin


  • GerEielts
  • Registratie: Augustus 2005
  • Laatst online: 09-05-2024
SKiLLa, hartstikke bedankt voor je antwoord en je zet me in de richting van een oplossing.

Vermoedelijk mis je gewoon user-authenticatie in je code. Wat krijg je als je de Url in je browser aanroept ?
Wanneer ik op een client in IE direct het volgende adres in geef: http://<URL>/TEST.doc, dan krijg ik de volgende foutmelding:

Serverfout in toepassing /.
--------------------------------------------------------------------------------

Runtime-fout
Beschrijving: Er is een toepassingsfout opgetreden op de server. Door de huidige aangepaste foutinstellingen voor deze toepassing kunnen de details van de toepassingsfout niet extern worden weergegeven (om beveiligingsredenen). De details kunnen echter wel worden weergegeven op browsers die op de lokale server worden uitgevoerd.

Details: Maak, om ervoor te zorgen dat de details van dit bepaalde foutbericht kunnen worden weergegeven op externe systemen, een code <customErrors> in een configuratiebestand web.config dat zich in de hoofdmap van de huidige webtoepassing bevindt. Het attribuut mode van deze code <customErrors> moet vervolgens worden ingesteld op Off.


<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>


Opmerkingen: De huidige foutenpagina die u ziet kan worden vervangen door een aangepaste foutenpagina door het attribuut defaultRedirect van de configuratiecode <customErrors> van de toepassing zodanig aan te passen dat dit verwijst naar een URL van een aangepaste foutenpagina.


<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>



De URL is een in IIS aangemaakte website (dus heeft geen web.config??? Ik kan in ieder geval geen web.config vinden), met een basismap-verwijzing waarin de machtigingen staan voor IUSR_<servername>. Ik heb deze account zelfs volledige rechten gegeven op de basismap (waarin Test.doc staat), echter zonder resultaat. (In IIS6 staat dus onder Mapbeveiliging/verificatie en toegang beheren: Anonieme toegang inschakelen (aangevinkt), met de account IUSR_<servername> en geintegreerde Windows-verficiatie (aangevinkt)). Ook de NTFS-rechten op de (gedeelde) map staan op volledig beheer voor IUSR_<servername>.

Dus, op basis van bovenstaande, lijkt het er op, dat je volledig gelijk hebt, maar ik zie nog geen oplossing. Enig idee ?

gr. Ger.

  • GerEielts
  • Registratie: Augustus 2005
  • Laatst online: 09-05-2024
Nog wat aanvullende informatie:

Als ik de applicatie (vanaf de client) NU laat open, dus na het aanpassen van de rechten enz.,
ontvang ik Test.doc terug (nog steeds als een soort webpagina en NIET met de originele tekst), maar in de title staat nu de URL die ik aanroep in plaats van "U bent niet gemachtigd deze pagina te bekijken"....

Dit duidt dus (althans volgens mij), dat het die runtimefout op de server is, maar hoe verhelp ik die ?

Wellicht brengt dat wat meer licht in de zaak !

gr. Ger.

[ Voor 11% gewijzigd door GerEielts op 20-02-2008 16:27 ]


Verwijderd

Heb je de users / user-groepen die gebruik maken van de site al eens toegevoegd aan de Administrators group en de IIS_WPG group? Het is aan de melding te zien inderdaad een rechten issue...

  • GerEielts
  • Registratie: Augustus 2005
  • Laatst online: 09-05-2024
Verwijderd schreef op donderdag 21 februari 2008 @ 09:19:
Heb je de users / user-groepen die gebruik maken van de site al eens toegevoegd aan de Administrators group en de IIS_WPG group? Het is aan de melding te zien inderdaad een rechten issue...
Bedankt voor je reactie.
Ik heb het volgende gedaan:
a. users/user-groepen toegevoegd aan o.a. Administrators group, echter zonder resultaat.
b. Vervolgens heb ik een site aangemaakt onder VS.net en die TEST genoemd. De bestanden van deze site staan dus eveneens in inetpub/www.root. Aan deze map alle rechten toegekend voor IUSR-<servername>. In IIS6 Anonieme toegang en Geintegreerde Windows aangevinkt. Hierna Test.doc in deze map geplaatst. Vervolgens TEST als Basismap in IIS aangemerkt.

Resultaat:
Indien ik vanaf de client in IE de URL oproep (als volgt: URL/Test.doc) dan wordt Test.doc geladen en MSWord gestart op de client (precies zoals ik het hebben wil). (Volgens mij wijst dit er op, dat er geen rechtenprobleem meer is.!) Wanneer ik echter met bovengenoemde code vanuit de applicatie de download doe (dus vanuit TEST), krijg ik Test.doc nog steeds als een soort webpagina binnen en MSWord wordt niet geopend.

De oplossing lijkt er dus nu in gelegen in de applicatie een browservenster te openen, het adres vanuit code te vullen en via de browser Test.doc in MSWord te laten openen. Dit vind ik echter zeer lelijk, want na het sluiten van MSWord keert de gebruiker weer terug in de browser en niet in de applicatie, terwijl het toch mogelijk moet zijn deze procedure vanuit de applicatie te regelen. Of moet ik nu een nieuw topic openen op een andere plek in dit forum (bv. bij VB.net) ??
gr. Ger.

  • _H_G_
  • Registratie: September 2002
  • Laatst online: 15:30
GerEielts schreef op donderdag 21 februari 2008 @ 14:26:
Of moet ik nu een nieuw topic openen op een andere plek in dit forum (bv. bij VB.net) ??
gr. Ger.
Goed idee, al zou ik dan volledige code geven. Het is nu moeilijk te zien wat je code doet met het resultaat.

Kan me voorstellen dat je een verkeerd mime-type terugstuurt naar de browser (en je browser de inkomende stream als html probeert te renderen). Al is het lang geleden dat ik met .net met streams heb gespeeld :)

  • GerEielts
  • Registratie: Augustus 2005
  • Laatst online: 09-05-2024
OK, bedankt zover voor jullie hulp. Wat mij betreft kan dit topic gesloten worden, ik heb de vraag in Programming gesteld.

gr. Ger.
Pagina: 1