2017-07-28 3 views
0

J'ai une page asp classique dans VBS et j'essaye de créer un fichier sur le serveur web avec le code suivant.classic asp créer un fichier texte sur le serveur web: erreur 800a0034 Bad_file_name_or_number

Set fso = CreateObject("Scripting.FileSystemObject") 
Set file1 = fso.CreateTextFile("\\localhost\inetpub\wwwroot\cs\batch\123456dirs.bat", true) 

Cela renvoie l'erreur suivante:

|666|800a0034|Bad_file_name_or_number

ligne 666 est la ligne CreateTextFile. Selon les documents Microsoft, cela signifie que j'essaie de créer un fichier avec un nom de fichier non valide. Ensuite, il explique les règles pour les noms de fichiers et le mien semble être parfaitement valide.

Des suggestions ou des idées sur la façon dont je peux résoudre ce problème?

+0

La fonction createtextfile s'exécute sur le serveur Web mais dans le contexte du serveur local lui-même. Tout chemin que vous lui donnez doit se résoudre comme si vous aviez ouvert une session sur un bureau Windows sur le serveur et essayé d'accéder à ce chemin sur CD. Sauf si vous avez créé un –

Répondre

1

première chose à vérifier pour vous assurer que votre les utilisateurs ont accès au dossier. En supposant que vous n'utilisez pas l'authentification Windows, assurez-vous que le compte IUSR dispose d'un accès en écriture au dossier. Deuxièmement, sauf si inetpub est configuré comme un partage dans un dossier, votre syntaxe ne fonctionnera pas. Si la racine de votre site Web se trouve dans le dossier CS, vous pouvez faire quelque chose comme:

Set file1 = fso.CreateTextFile(Server.MapPath("/cs/batch/123456dirs.bat"), true) 
0

La fonction createtextfile() s'exécute sur le serveur Web mais dans le contexte du serveur local lui-même. Autrement dit, tout chemin que vous lui donnez doit être résolu comme si vous étiez connecté à un bureau Windows sur le serveur et que vous essayiez de le faire sur ce chemin.

Le format \ localhost ... est un chemin UNC. Voir this question pour une discussion sur les chemins UNC et les fenêtres. Sauf si vous savez avec certitude qu'il existe un chemin UNC mappé pour \ localhost, c'est probablement votre problème. Vous pouvez faire l'hypothèse que \ localhost sera un chemin raisonnable à utiliser, mais comme je l'ai dit, sauf si vous savez avec certitude qu'il est disponible, alors c'est un choix invalide. Enfin, si vous décidez de mettre en place un partage pour \ localhost, vous entrerez dans un territoire intéressant autour du contexte de l'utilisateur dans lequel le serveur web fonctionne. Vous verrez que vous devrez configurer le partage pour le \ localhost. Utilisateur IIS configuré comme identité d'exécution pour IIS, vous devez donc le savoir et créer la configuration requise pour donner le partage à cet utilisateur.

Si elle était moi, je passe à l'aide d'un chemin de fenêtres standard, bien que même alors, vous devez apprécier l'exécution en tant que contexte utilisateur et configuration de sécurité, etc.