Attualmente sto usando jquery ajax per chiamare un pagemethod (che funziona benissimo);Accesso al webmethod con jquery
$.ajax({
type: "POST",
url: "ArticleList.aspx/GetArticleTags",
data: "{'articleId' : " + articleId + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.hasOwnProperty("d")) { msg = msg.d; }
var tags = JSON.parse(msg);
//do something
}
});
Il pagemethod;
<WebMethod()>
Public Shared Function GetArticleTags(ByVal articleId As Integer) As String
Using myDb As New MyRepository
Dim js As New JavaScriptSerializer
Dim returnString = js.Serialize((From t In myDb.GetArticleTags(articleId) Select t.TagId, t.Tag).ToList)
Return returnString
End Using
End Function
Sono ora nella posizione, in cui ho bisogno di accedere alla mia funzione GetArticleTags da più pagine. Per aggiornarlo rapidamente è possibile
- Copia la funzione nella mia nuova pagina di aspx e chiamarla allo stesso modo.
- Continua a puntare alla pagina originale di aspx.
Entrambe sono piuttosto spazzatura.
Quindi l'unico modo ragionevole è chiamare un metodo wcf (webget). Ciò avrà il vantaggio di non dover serializzare manualmente gli oggetti su json. Sarà fatto per me.
Ho già un webservice restful nella soluzione, ma sono cauto nel chiamarlo dalla mia webapp. Preferirei tutto il codice in diretta all'interno della mia webapp, non dipendendo da un servizio web che si troverà in un pool di app diverso sullo stesso server di iis. Potrebbe essere necessario avviare a freddo ecc. E ho bisogno che questo sia veloce.
Ho aggiunto un file wcf alla mia webapp utilizzando il modello "Servizio WCF abilitato per AJAX". Ma così facendo, sto confondendo la mia webapp con endpoint nel web.config ecc. (E attualmente sto ricevendo 500 eccezioni System.ServiceModel.ServiceActivationException)
Quindi, fino alla mia domanda ... Qual è il modo migliore per chiamare la mia funzione? (Sto pensando che deve essere il mio servizio web riposante) C'è un'altra opzione che non sto considerando?
Grazie mille.
In realtà ho creato creass come servizio asmx .... ma poi ho pensato nahhhh e prontamente cancellato (wcf vince sempre su asmx per me in questi giorni [ma per i servizi web corretti]). Ma probabilmente hai ragione, sarà la * migliore * soluzione nella mia situazione. – GordonB