semaines dernière, j'ai créé un service web ASMX qui renvoie plusieurs lignes à l'aide du savon.WCF - retour plusieurs enregistrements
je maintenant passer à WCF et suis désireux de faire la même chose.
Dans mon ASMX service web que je fais ce qui suit ..
public class sample
{
public string Id { get; set; }
public string Name { get; set; }
public string NameOfFile { get; set; }
//public int Distance { get; set; }
}
[WebMethod]
public sample[] Test(int count, float lat, float lng)
{
DataTable dt = new Gallery().DisplayNearestByLatLong(count, lat, lng);
var samples = new List<sample>();
foreach (DataRow item in dt.Rows)
{
var s = new sample();
s.Id = item[0].ToString();
s.Name = item[1].ToString();
s.NameOfFile = item[2].ToString();
//s.Distance = (int)item[3];
samples.Add(s);
}
return samples.ToArray();
}
Ce code fonctionne très bien, mais maintenant je veux faire la même chose, mais en utilisant WCF.
Mes fichiers actuels WCF ressembler à ceci (j'ai copié un tutoriel mais avez configuré le contrat de données (qui je pense est nécessaire?))
GalleryWebService.cs
public class GalleryWebService : IGalleryWebService
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
return composite;
}
public CompositeType GetTestData()
{
return new CompositeType();
}
}
IGalleryWebService.cs
[ServiceContract]
public interface IGalleryWebService
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "test/random")]
CompositeType GetTestData();
}
[DataContract]
public class CompositeType
{
[DataMember]
string _id;
public string Id
{
get { return _id; }
set { _id = value; }
}
[DataMember]
string _name = "Hello";
public string Name
{
get { return _name; }
set { _name = value; }
}
[DataMember]
string _nameoffile = "Hello";
public string NameOfFile
{
get { return _nameoffile; }
set { _nameoffile = value; }
}
}
Quelle est la meilleure façon de le faire et comment? Votre aide est grandement appréciée!
Merci d'avance.
O.k, je l'ai mis en œuvre que mais quand je l'ai mis sur ma vie serveur web IIS ne fonctionne pas. C'est seulement quand je mets DataTable. Avez-vous des idées à ce sujet? – tmutton
Je reçois l'erreur .. IIS a spécifié des schémas d'authentification 'IntegratedWindowsAuthentication, Anonymous', mais la liaison prend uniquement en charge la spécification d'un seul schéma d'authentification. Les schémas d'authentification valides sont Digest, Negotiate, NTLM, Basic ou Anonymous. Modifiez les paramètres IIS afin que seul un schéma d'authentification unique soit utilisé. – tmutton
Panneau de configuration -> Outils d'administration -> IIS -> Sélectionnez un site Web ou un applciation -> Double-cliquez sur l'icône Authentificcation -> désactiver l'authentification Windows intégrée – vorrtex