Question

J'ai écrit une nouvelle application dans un réseau, je ne l'ai pas travaillé avant, et je courais un problème.

Si je le code C #:

FileStream fs = File.Create(@"\\MyServer\MyShare\testing.txt");
fs.Close();

Dans une application de la console, ce code se termine correctement.

Dans une application ASP.Net, je reçois cette erreur: Échec de la connexion:. Nom d'utilisateur inconnu ou mot de passe incorrect

Dans l'application ASP.Net, si j'ajoute l'identité impersonate = "true", je reçois cette erreur:. L'accès au chemin \ MyServer \ MyShare \ testing.txt 'est refusé

Je ne l'ai jamais couru dans ce message d'échec d'ouverture de session avant; où est-ce vient? Si je crée une application sur le serveur et l'ont écrire à l'emplacement phsyical, il fonctionne très bien (donc la sécurité, il est bon), il semble comme si la sécurité à la part ne fonctionne pas (même si elle a mis en « tout le monde » à plein écrit), ou il y a quelque chose qui manque au niveau du serveur dans lequel je ne suis pas autorisé à voir quoi que ce soit en général.

Quelqu'un sait-il ce que je suis absent ici? J'ai écrit d'autres applications qui ont fait des choses semblables et ont jamais rencontré ce problème

Merci!

Était-ce utile?

La solution

Mise à jour:

Je pense que je posté trop tôt ... La raison pour laquelle il échouait sur mon localhost était dû au répertoire étant défini comme autoriser l'accès anonyme (donc la page n'a pas usurper l'identité, l'utilisateur était « ») <. / p>

Il a également commencé à travailler sur le serveur ainsi; Cependant, rien n'a été changé là ... Je ne sais pas si quelque chose a été déclenchée pendant les temps d'arrêt / arrêt ou quoi, mais tout fonctionne de l'application comme prévu.

Merci pour les commentaires!

Autres conseils

Le problème est que l'identité usurper l'identité définie sur false le compte de processus de travail ASP.NET tente d'écrire à la part, généralement que le service de réseau ou compte ASPNET. Selon la version de Windows que vous utilisez.

mise à true usurper l'identité, sans spécifier un nom d'utilisateur ou mot de passe utilisera l'authentification des utilisateurs actuels pour essayer de faire la demande.

Vous devrez soit une subvention les autorisations de compte de processus de travail, ce qui le plus probable est pas possible. Ou B créer un compte spécifique que votre application peut usurper l'identité, puis spécifiez les informations d'identification à l'intérieur du web.config dans la balise d'identité.

Par défaut, les applications ASP.NET exécuteront comme votremachine \ IUSR_ votremachine. Soit vous devez ouvrir les autorisations sur le partage au capital Tout le monde (ce qui peut encore fonctionne pas si les machines ne sont pas sur le même domaine), ou exécuter votre application IIS en tant que quelqu'un qui a accès au partage.

Vous pouvez modifier l'utilisateur que l'application ASP.NET fonctionne sous par:

.Open Outils d'administration -> Internet Information Services , puis faites un clic droit sur le site Web ou un répertoire virtuel qui contient l'application et cliquez sur Propriétés . Cliquez sur l'onglet Sécurité de répertoire et cliquez sur Modifier . Enfin, dans le Accès anonyme tapez le nom d'utilisateur et mot de passe d'un utilisateur qui a accès au partage.

Mike

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top