J'écris mon premier SVC et il me manque quelque chose. Tout compile bien mais la page ne semble pas retourner quoi que ce soit de mon service.C# - Première tentative avec WCF dans VS2008
Code de service:
namespace RivWorks.Web.Services
{
[ServiceContract(Namespace = "http://www.rivworks.com/ws/")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class PlayerService
{
[OperationContract]
public string Decrypt(string interactive)
{
return RivWorks.Security.Cryptography.Internal.Decrypt(interactive);
}
[OperationContract]
public void LogEvent(Int64 HistoryRequestID, string VideoPath, string Action, string Target, string ClientDateTime, string UrlReferrer, float Offset, string TimeZone)
{
DateTimeOffset dt = RivWorks.DateTimeInfo.ConvertFromFlash(ClientDateTime);
RivWorks.Membership.UserInfo userInfo = RivWorks.DateTimeInfo.GetUserInfo(dt, Offset, TimeZone, "Log Request");
RivWorks.Data.Player.LogEvent(HistoryRequestID, VideoPath, Action, Target, userInfo, UrlReferrer);
}
}
}
Code Mon ASPX:
<body>
<form id="form1" runat="server">
<h1>Greeting</h1>
<div>
<asp:Literal id="PutFrameHere" runat="server" />
</div>
<hr />
<asp:ScriptManager ID="SM1" runat="server">
<Services>
<asp:ServiceReference Path="~/Services/PlayerService.svc" />
</Services>
</asp:ScriptManager>
<script type="text/javascript">
function OnDecrypt(result) {
www.rivworks.com.ws.PlayerService.Decrypt($get("encryptedText").value, OnDecryptComplete, OnError, null);
}
function OnDecryptComplete(result) {
alert("Complete: " + result.toString());
}
function OnError(result) {
alert("Error: " + result.toString());
}
</script>
Enter encrypted string:<input type="text" id="encryptedText" />
<br />
<input type="button" value="Decrypt" onclick="OnDecrypt()"? />
</form>
</body>
Lorsque je clique sur le bouton, rien ne semble se passer. Je m'attendrais à une erreur ou une chaîne en réponse. Utiliser FireBug et ServiceCapture ne révèlent rien. ServiceCapture n'affiche aucune demande.
Sur une note légèrement différente - que devrais-je faire pour permettre à une application Flash et/ou Flex d'appeler le service correctement? Je ne fais pas non plus si je suis curieux de savoir à quoi devrait ressembler la commande (pour donner un exemple à nos développeurs flash/flex.)
Des trucs, astuces, astuces?
oublié de dire que j'utilisais un tutoriel trouvé à http://www.pluralsight.com/community/blogs/fritz/archive/2008/01/31/50121.aspx
De mon web.config:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="RivWorks.Web.Services.PlayerServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="RivWorks.Web.Services.PlayerService">
<endpoint address="" behaviorConfiguration="RivWorks.Web.Services.PlayerServiceAspNetAjaxBehavior"
binding="webHttpBinding" contract="RivWorks.Web.Services.PlayerService" />
</service>
</services>
</system.serviceModel>
</configuration>
Pardonnez-moi - je ne suis pas tout à fait clair sur ce que votre nous recherchons. J'ai également abandonné les sections qui ont fait pas changement quand j'ai ajouté WCF.
<%@ ServiceHost Language="C#"
Debug="true"
Service="RivWorks.Web.Services.PlayerService"
CodeBehind="PlayerService.svc.cs" %>
Pas tout à fait ... match de
le "service config" est tout dans la section '' - c'est la section de configuration WCF. Tout le reste n'est pas vraiment nécessaire, dans ce cas. –
OK, vous utilisez le "webHttpBinding" pour un service REST. Ce qui me manque maintenant, c'est le fichier PlayerService.svc - vous devez vous assurer de spécifier l'hôte de service correct pour le webHttp –
mis à jour ma réponse - j'espère que cela vous fera aller un peu plus loin! –