Je suis en cours d'exécution sur SL4 VS2010. J'ai une application qui authentifie via un service Web à SPROC dans mon DB. Malheureusement, ce n'est pas RIA WCF/WCF, car je hérite du DB/services de mon client.Amusez-vous avec « Le serveur distant a renvoyé une erreur: NotFound » - Silverlight4 Sur le navigateur
Cela fonctionne parfaitement à l'intérieur d'un navigateur (via HTTPS). J'essaye de déplacer cette OOB, et c'est à ce moment que mon authentification échoue. Voici les étapes de mon travail ...
1) Propriétés SL App> Activer l'application en cours d'exécution Out of Browser 2) SL Propriétés App> Hors des paramètres du navigateur> Obliger élevée confiance lors de l'exécution OOB
Si je mets un point d'arrêt sur mon bouton d'ouverture de session, je vois que l'appel de service est en cours. Cependant, si je le franchis (ou si je définis un point d'arrêt sur le service Web d'ouverture de session), le code n'atteindra jamais ce niveau. Voici le bloc auquel il échoue:
public LogonSVC.LogonResponse EndLogon(System.IAsyncResult result) {
object[] _args = new object[0];
LogonSVC.LogonResponse _result = ((LogonSVC.LogonResponse)(base.EndInvoke("Logon", _args, result)));
return _result;
}
Je sais que l'utilisation d'une approbation élevée signifie que le fichier crossdomain.xml n'est pas nécessaire. J'en ai laissé tomber un qui permet tout, juste pour tester, et ça échoue toujours.
est ici le code qui appelle le service:
private void loginButton_Click(object sender, RoutedEventArgs e)
{
string Username = txtUserName.Text;
string Password = txtPassword.Password;
Uri iSilverlightServiceUriRelative = new Uri(App.Current.Host.Source, "../Services/Logon.asmx");
EndpointAddress iSilverlightServiceEndpoint = new EndpointAddress(iSilverlightServiceUriRelative);
BasicHttpBinding iSilverlightServiceBinding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);// Transport if it's HTTPS://
LogonService = new LogonSVC.LogonSoapClient(iSilverlightServiceBinding, iSilverlightServiceEndpoint);
LogonService.LogonCompleted += new EventHandler<LogonSVC.LogonCompletedEventArgs>(LogonService_LogonCompleted);
LogonService.LogonAsync(Username, Password);
}
Mon LogonService_LogonCompleted ne se déclenche pas non plus (ce qui est logique, juste un heads-up).
Je ne sais pas comment Fiddler cela, comme cela est en cours d'exécution OOB avec le site servi par localhost/IIS. Je sais que cela fonctionne dans le navigateur, donc je suis curieux de savoir ce qui le casserait OOB.
MISE À JOUR J'ai changé ServiceReferences.ClientConfig aux URL relatives au lieu de absolue, à la recommandation d'un autre poste que je lis. Voici le code:
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="CommonSoap" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="Transport" />
</binding>
<binding name="LogonSoap" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="/Services/Common.asmx"
binding="basicHttpBinding" bindingConfiguration="CommonSoap"
contract="CommonSVC.CommonSoap" name="CommonSoap" />
<endpoint address="/Services/Logon.asmx"
binding="basicHttpBinding" bindingConfiguration="LogonSoap"
contract="LogonSVC.LogonSoap" name="LogonSoap" />
</client>
</system.serviceModel>
MISE À JOUR 2
trace de la pile, si elle aide à tout le monde ...
at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
at TSMVVM.TSMVVMLogonSVC.LogonSoapClient.LogonSoapClientChannel.EndLogon(IAsyncResult result)
at TSMVVM.TSMVVMLogonSVC.LogonSoapClient.TSMVVM.TSMVVMLogonSVC.LogonSoap.EndLogon(IAsyncResult result)
at TSMVVM.TSMVVMLogonSVC.LogonSoapClient.EndLogon(IAsyncResult result)
at TSMVVM.TSMVVMLogonSVC.LogonSoapClient.OnEndLogon(IAsyncResult result)
at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)
Merci,
Scott
Cette erreur indique des problèmes sur le serveur. Implémentez les diagnostics comme ici: http://stackoverflow.com/questions/4773026/how-to-debug-wcf-service-call-works-in-vs-but-not-in-iis/4783388#4783388 et ajoutez des informations sur un vrai type de l'erreur. – vorrtex
Hey Vorrtex. Cela semble être pour WCF. J'ai essayé de l'implémenter (ajoutez simplement system.diagnostics à mon web.config, oui?). Aucun fichier journal Je n'utilise pas WCF, j'utilise les services web asmx. –