Problème Affichage pages asp
Le
Jean-Michel

Bonjour,
Mon système est un xp pro, j'utilise IIS comme serveur web.
J'ai écrit avec VB.Net en asp : un service Web asp qui propose une méthode
d'envoi de données et une méthode de mise à jour de données. le service web
fait appel à une base de données access.
D'autre part , j'ai écrit une application client web asp qui fait appel à
mon service web pour l'affichage et la mise à jour des données.
Je n'arrive pas à exécuter mes pages web clients depuis internet j'ai le
message suivant (je vous accorde que ce n'est pas très lisible, j'ai fait un
copier-coller).
Si quelqu'un a assez d'éléments pour me guider dans la voie à suivre, je ne
pense pas que ce soit un problème de sécurité parce que quand j'enlève de mes
pages asp l'accès aux données je peux accéder à mes pages depuis internet.
Voici le message d'erreur qui s'affiche sur le poste client.
D'avance, merci pour votre aide,
Jean-Michel
Détails de l'exception: System.Web.Services.Protocols.SoapException:
System.Web.Services.Protocols.SoapException: Le serveur n'a pas pu traiter la
demande. > System.Data.OleDb.OleDbException: Erreur non spécifiée at
System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) at
System.Data.OleDb.OleDbConnection.InitializeProvider() at
System.Data.OleDb.OleDbConnection.Open() at
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection,
ConnectionState& originalState) at
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32
startRecord, Int32 maxRecords, String srcTable, IDbCommand command,
CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataSet
dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand
command, CommandBehavior behavior) at
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) at
CoureurWebService.CoureurService.GetCoureur() Fin de la trace de la pile
d'exception interne
Erreur source:
Une exception non gérée s'est produite lors de l'exécution de la demande Web
actuelle. Les informations relatives à l'origine et l'emplacement de
l'exception peuvent être identifiées en utilisant la trace de la pile
d'exception ci-dessous.
Trace de la pile:
[SoapException: System.Web.Services.Protocols.SoapException: Le serveur n'a
pas pu traiter la demande. > System.Data.OleDb.OleDbException: Erreur non
spécifiée
at System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr)
at System.Data.OleDb.OleDbConnection.InitializeProvider()
at System.Data.OleDb.OleDbConnection.Open()
at System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection,
ConnectionState& originalState)
at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32
startRecord, Int32 maxRecords, String srcTable, IDbCommand command,
CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32
startRecord, Int32 maxRecords, String srcTable, IDbCommand command,
CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
at CoureurWebService.CoureurService.GetCoureur()
Fin de la trace de la pile d'exception interne ]
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String
methodName, Object[] parameters)
CoureurWebClient.localhost.CoureurService.GetCoureur() +34
CoureurWebClient.WebForm1.Page_Load(Object sender, EventArgs e) +73
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain()
--
Jean-Michel
Mon système est un xp pro, j'utilise IIS comme serveur web.
J'ai écrit avec VB.Net en asp : un service Web asp qui propose une méthode
d'envoi de données et une méthode de mise à jour de données. le service web
fait appel à une base de données access.
D'autre part , j'ai écrit une application client web asp qui fait appel à
mon service web pour l'affichage et la mise à jour des données.
Je n'arrive pas à exécuter mes pages web clients depuis internet j'ai le
message suivant (je vous accorde que ce n'est pas très lisible, j'ai fait un
copier-coller).
Si quelqu'un a assez d'éléments pour me guider dans la voie à suivre, je ne
pense pas que ce soit un problème de sécurité parce que quand j'enlève de mes
pages asp l'accès aux données je peux accéder à mes pages depuis internet.
Voici le message d'erreur qui s'affiche sur le poste client.
D'avance, merci pour votre aide,
Jean-Michel
Détails de l'exception: System.Web.Services.Protocols.SoapException:
System.Web.Services.Protocols.SoapException: Le serveur n'a pas pu traiter la
demande. > System.Data.OleDb.OleDbException: Erreur non spécifiée at
System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) at
System.Data.OleDb.OleDbConnection.InitializeProvider() at
System.Data.OleDb.OleDbConnection.Open() at
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection,
ConnectionState& originalState) at
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32
startRecord, Int32 maxRecords, String srcTable, IDbCommand command,
CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataSet
dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand
command, CommandBehavior behavior) at
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) at
CoureurWebService.CoureurService.GetCoureur() Fin de la trace de la pile
d'exception interne
Erreur source:
Une exception non gérée s'est produite lors de l'exécution de la demande Web
actuelle. Les informations relatives à l'origine et l'emplacement de
l'exception peuvent être identifiées en utilisant la trace de la pile
d'exception ci-dessous.
Trace de la pile:
[SoapException: System.Web.Services.Protocols.SoapException: Le serveur n'a
pas pu traiter la demande. > System.Data.OleDb.OleDbException: Erreur non
spécifiée
at System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr)
at System.Data.OleDb.OleDbConnection.InitializeProvider()
at System.Data.OleDb.OleDbConnection.Open()
at System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection,
ConnectionState& originalState)
at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32
startRecord, Int32 maxRecords, String srcTable, IDbCommand command,
CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32
startRecord, Int32 maxRecords, String srcTable, IDbCommand command,
CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
at CoureurWebService.CoureurService.GetCoureur()
Fin de la trace de la pile d'exception interne ]
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String
methodName, Object[] parameters)
CoureurWebClient.localhost.CoureurService.GetCoureur() +34
CoureurWebClient.WebForm1.Page_Load(Object sender, EventArgs e) +73
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain()
--
Jean-Michel
votre chaîne de connexion.
--
Paul Bacelar
"Jean-Michel" news:
web
un
ne
mes
la
pile
Web
n'a
non
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClient
Message message, WebResponse response, Stream responseStream, Boolean
asyncCall)
Merci pour votre aide, mais je voudrais juste préciser un point, en local
mon appli fonctionne correctement, est-ce alors possible dans ce cas que ce
soit un problème de connexion ?
Quand vous parlez de connexion, vous pensez bien à la connexion à la base de
données ?
Je ne suis plus tout à fait débutant, mais encore trop peu expérimenté,
mes questions vous paraîtront peut-être simplettes !
En tout cas merci pour votre temps,
Jean-Michel
"Paul Bacelar" a écrit :
La callstack que vous nous avez donnée semble sans ambiguïté. C'est dans la
méthode Open qui est appelé en interne par Fill d'un DbDataAdapter que le
problème ce produit.
Il ce peut que cela soit la commande du Fill qui n'est pas bonne puisque la
connexion est ouvert sur cette méthode.
Le plus probable semble un problème de sécurité.
Vérifiez votre impersonnalisation de l'application ASP.NET (dans le
web.config) et l'accès aux pages interdites aux anonymes.
On a tous débuté un jour et votre question ne semble pas être si simple et
si courante.
--
Paul Bacelar
"Jean-Michel" news:
ce
de
Vérifiez
méthode
service
appel à
le
fait
je
de
internet.
traiter
at
System.Data.Common.DbDataAdapter.Fill(DataSet
IDbCommand
la
demande
serveur
Erreur
connection,
Int32
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClient
Merci pour votre gentillesse, votre aide me permet de progresser, le
Développement ASP est vraiment très intéressant, relativement complexe,
heureusement qu'il y a des gens comme vous pour aider les débutants.
Pour répondre à vos remarques :
Oui, j'ai bien mentionné au niveau des deux web config (1 Web.config pour
mon projet web service et un web.config pour mon projet web asp) la mention
<identity impersonate="true"/>
J'ai également interdit les connexions anonymes sur mes 2 projets, j'ai
réalisé cette opération par l'intermédiaire de IIS (click droit sur le projet
puis sécu du répertoire, etc...).
Vous me parlez d'interdire l'accès des pages aux anonymes, est-ce par
l'intermédiaire du web.config avec les instructions du type
<allow users="?" />
Bonne Journée à vous,
Jean-Michel
"Paul Bacelar" a écrit :
identifiés aux pages web de votre application.
C'est très bien, mais voila, il y toujours un petit hic ;-).
IIS n'autorise que les personnes identifiées à se connecter mais comme c'est
une application ASP.NET, IIS transfert à la page de login de l'application
la charge d'authentifier l'utilisateur puisque les personnes anonymes sont
interdites et que l'on peut customiser la mécanique d'authentification avec
ASP.NET.
Si dans votre web.config, vous avez <allow users="?" /> au lieu de <deny
users="?" />, vous autorisez toutes les personnes non authentifiées à se
connecter et ASP.NET dit à IIS que c'est OK pour le nouveau venu avec un
cookie de session et tout le toutim.
Vous avez donc une personne inconnue qui accède à vos pages. Si la personne
est inconnue le "<identity impersonate="true"/>" doit laisser le thread ASP
sur son compte par défaut qui est fonction de la version d'IIS (ASPNET pour
IIS5, me rappel plus pour IIS6)
Ces comptes sont locaux à la machine contenant IIS et lors de la connexion à
SQLServer, la sécurité intégré window doit vous rejeter.
Donc essayer "<deny users="?" />" pour savoir si le problème n'est pas juste
un problème de sécurité.
--
Paul Bacelar
"Jean-Michel" news:
mention
projet
la
le
la
et
local
que
base
expérimenté,
message
j'ai
j'ai
suivre,
j'enlève
System.Web.Services.Protocols.SoapException:
spécifiée
connection,
Int32
command,
de
de
pile
data,
command,
command,
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClient
Boolean
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String
+73
J'ai suivi vos conseils, mais malheureusement dans mon cas, ça n'a pas
résolu le problème, j'ai toutefois trouvé dans mon code la ligne qui pose
problème, dans mon Form Load j'alimente mon Datagrid avec les données de la
base, et c'est la ligne Me.DataGrid1.DataBind() qui déclenche l'eereur, voici
l'ensemble de mon code sur Page Load.
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Placez ici le code utilisateur pour initialiser la page
Dim ws As New CoureurWebClient.localhost.CoureurService
ws.Credentials = System.Net.CredentialCache.DefaultCredentials
CoureurData.Merge(ws.GetCoureur())
If Not Page.IsPostBack Then
Me.DataGrid1.DataBind()
End If
End Sub
Si par expérience, vous voyez ou est le problème, Merci d'avance
Jean-Michel
Passez une bonne journée.
"Paul Bacelar" a écrit :
--
Paul Bacelar
"Jean-Michel" news:
la
voici
non
c'est
l'application
sont
avec
personne
ASP
pour
connexion à
juste
complexe,
pour
j'ai
dans
que
puisque
simple
message
en
cas
la
une
le
fait
données.
internet
lisible,
depuis
pas pu
trace
la
l'emplacement
la
Le
System.Data.OleDb.OleDbException:
hr)
Int32
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClient
EventArgs e)
Je suis toujours en train de chercher, mais je ne trouve pas, il y a peut
être une histoire de credentials, par contre je n'ai pas beaucoup d'infos sur
les credentials, je vais essayer de trouver de l'info là-dessus.
Jean-Michel
"Paul Bacelar" a écrit :
Ca y est ça marche, pour celà j'ai enlevé la ligne <identity
impersonate="true"/>
Merci encore Paul,
"Jean-Michel" a écrit :
toujours sur le même compte pas défaut d'ASP.NET. Si ta base intègre des
mécanismes de sécurité basés sur des rôles (des utilisateurs n'ayant pas les
mêmes droits sur la base), ils seront pris en défaut et ce sera à ton
application de vérifier les donnés accédées en fonction de l'utilisateur
connecté.
--
Paul Bacelar
"Jean-Michel" news:
peut
d'infos sur
pas
pose
données de
l'eereur,
personnes
comme
anonymes
d'authentification
<deny
authentifiées à se
avec un
thread
(ASPNET
pas
message
progresser, le
débutants.
Web.config
la
projets,
sur le
est-ce par
C'est
DbDataAdapter
bonne
(dans le
si
point,
dans ce
connexion à
connection.
in
web.
propose
données.
qui
voie à
quand
pages
client.
n'a
non
hr) at
at
data,
IDbCommand
srcTable,
at
la
l'exécution de
trace de
System.Web.Services.Protocols.SoapException:
System.Data.OleDb.OleDbConnection.ProcessResults(Int32
System.Data.OleDb.OleDbConnection.InitializeProvider()
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection
System.Data.Common.DbDataAdapter.FillFromCommand(Object
IDbCommand
dataSet,
IDbCommand
dataSet)
interne ---]
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClient
responseStream,
CoureurWebClient.localhost.CoureurService.GetCoureur() +34