expertenaustausch > microsoft.* > microsoft.inetserver.iis.asp

Danny Wackes (28.06.2005, 10:06)
Hallo zusammen,

ich krieg das einfach nicht hin.

Wir haben eine Intranetanwendung (ASP) über die man Dateien die auf dem
Server liegen via Browser direkt in der dazugehörigen Anwendung (zb. Word)
öffnen kann. Das ganze lief bislang mit folgendem Quellcode:

<script language="JavaScript">
// Öffnen von Dokumenten mit der dazu verknüpften Anwendung
function openDoc(strDoc)
{
var obj = new ActiveXObject("LaunchinIE.Launch");
obj.ShellExecute("open", strDoc);
}
</script>

und dann:

<a href="javascript:openDoc('\\\\servername\\dateien\ \filename')">

Vorteil ist das die Datei direkt geöffnet wird und nicht extra nachgefragt
wird ("wollen sie wirklich etc...")

Jetzt soll das ganze ausgebaut werden und die Seite soll via SSL auch übers
Internet erreichbar sein. Ich dachte ich bau da die Funktion
"Server.Mappath" ein damit der Servername korrekt eingesetzt wird. (Bislang
ist das ja der Interne Name gewesen - das klappt ja nicht im Internet.)

Leider bekomme ich das nicht hin und bin mir nun auch gar nicht mehr sicher
ob ich nicht total auf dem Holzweg bin.

Wäre dankbar für Denkanstöße und Tipps.

Könnte man denn vllt. eine Funktion einbauen die das variiert je nachdem
von wo der User kommt ? Also wenn er aus dem Intranet ist dann bleibts wie
es ist und wenn er aus dem Internet kommt dann wird nur ein normaler
Downloadlink zur Verfügung gestellt. Wäre das machbar und Sinnvoll ?
Stefan Falz [MVP] (28.06.2005, 10:29)
Hallo Danny,

"Danny Wackes" schrieb:

> <a href="javascript:openDoc('\\\\servername\\dateien\ \filename')">
> Vorteil ist das die Datei direkt geöffnet wird und nicht extra nachgefragt
> wird ("wollen sie wirklich etc...")


Außer bei Leuten, die keinen IE, kein JavaScript, kein ActiveX, kein ...
haben oder zulassen.

> Jetzt soll das ganze ausgebaut werden und die Seite soll via SSL auch übers
> Internet erreichbar sein. Ich dachte ich bau da die Funktion
> "Server.Mappath" ein damit der Servername korrekt eingesetzt wird.


Server.MapPath dient zum Umsetzen eines relativen Pfads (bspw. /abc/test.doc)
in einen absoluten Pfad (bspw. X:\inetpub\wwwroot\abc\test.doc). Den Server-
namen kannst du du damit nicht setzen. Das würde IMO auch nichts bringen, das
eine UNC Freigabe übers Internet in 99,9% aller Fälle gar nicht funktioniert.

> Könnte man denn vllt. eine Funktion einbauen die das variiert je nachdem
> von wo der User kommt ? Also wenn er aus dem Intranet ist dann bleibts wie
> es ist und wenn er aus dem Internet kommt dann wird nur ein normaler
> Downloadlink zur Verfügung gestellt. Wäre das machbar und Sinnvoll ?


Das kann man machen, nur speichern geht dann nicht (direkt). Um abzufragen,
ob der User aus dem Intra- oder dem Internet kommt, _könntest_ du bspw.
einfach Request.ServerVariables("SERVER_NAME") prüfen und schauen, ob da
der lokale Intranetname oder bspw. drinsteht. Da das
aber je nach Konfiguration (Firewall, Proxy, ...) nicht immer so drinsteht
wie man es erwartet :) wäre eine Alternative, die Client IP Adresse zur
Prüfung zu verwenden. Wenn es eine interne Adresse ist, ... (ist aber
genauso konfigurationsabhängig)
Danny Wackes (28.06.2005, 11:51)
Am Tue, 28 Jun 2005 10:29:15 +0200 schrieb Stefan Falz [MVP]:

Hallo Stefan,

>> Vorteil ist das die Datei direkt geöffnet wird und nicht extra nachgefragt
>> wird ("wollen sie wirklich etc...")

> Außer bei Leuten, die keinen IE, kein JavaScript, kein ActiveX, kein ...
> haben oder zulassen.


Jo da hast du natürlich recht. Aber da das hier im Intranet alles geklärt
ist haben wir das so gemacht. Klappt auch gut.

> Server.MapPath dient zum Umsetzen eines relativen Pfads (bspw. /abc/test.doc)
> in einen absoluten Pfad (bspw. X:\inetpub\wwwroot\abc\test.doc). Den Server-
> namen kannst du du damit nicht setzen. Das würde IMO auch nichts bringen, das
> eine UNC Freigabe übers Internet in 99,9% aller Fälle gar nicht funktioniert.


Okay. verstanden. (Endlich :) )

> Das kann man machen, nur speichern geht dann nicht (direkt). Um abzufragen,
> ob der User aus dem Intra- oder dem Internet kommt, _könntest_ du bspw.
> einfach Request.ServerVariables("SERVER_NAME") prüfen und schauen, ob da
> der lokale Intranetname oder bspw. drinsteht. Da das
> aber je nach Konfiguration (Firewall, Proxy, ...) nicht immer so drinsteht
> wie man es erwartet :) wäre eine Alternative, die Client IP Adresse zur
> Prüfung zu verwenden. Wenn es eine interne Adresse ist, ... (ist aber
> genauso konfigurationsabhängig)


Hm, okay. Direktes Speichern soll von "aussen" auch nicht gehen. Download
only. Ich werd das mal "Server_Name" umsetzen.

Dank dir für den Fingerzeig ! :)
Ähnliche Themen