J'essaye de tester le code autour d'un service web qui n'est pas encore disponible. J'essaye de simuler ma propre version. Selon les spécifications, il sera appelé comme ça.Puis-je créer un service Web doté de propriétés?
var service = new Service();
service.SD = new ServiceData();
service.SD.ID = "ABC123";
service.SD.Auth = "00000";
string result = service.DoMyThing();
Ceci est le plus proche que j'ai eu.
var service = new Service();
service.set_SD(new ServiceData());
service.get_SD().ID = "ABC123";
service.get_SD().Auth = "00000";
service.DoMyThing();
Le problème est avec la propriété SD. Comment écrire le service pour que Visual Studio 2008 génère correctement la référence Web?
Voici mon code de service web factice actuel.
public class Service : System.Web.Services.WebService
{
// This doesn't show up in the generated proxy at all
public static ServiceData SDTest;
// For extra credit explain why this needs to be static for it to work
private static ServiceData _sd;
public ServiceData SD
{
[WebMethod(EnableSession = true)]
get { return _sd; }
[WebMethod(EnableSession = true)]
set { _sd = value; }
}
[WebMethod]
public string DoMyThing()
{
// Presumably the real service accesses SD in here
return "";
}
}
public class ServiceData
{
public string ID { get; set; }
public string Auth { get; set; }
}
Cela ne fonctionne pas. Il ne peut pas y avoir de propriété SD. Passez "sd" comme paramètre de méthode. –
Non, je suis assez sûr que cela fonctionne dans .Net. Il est envoyé en tant que en-tête SOAP personnalisé. Voir: http://www.codeproject.com/KB/webservices/SOAPHeaderAuthentication.aspx –
Cela fonctionne uniquement s'il existe un en-tête SOAP personnalisé. Il doit être déclaré par le WSDL. –