Ich schreibe gerade meine erste SVC und vermisse etwas. Es kompiliert alles gut, aber die Seite scheint nichts von meinem Dienst zurückzugeben.
Dienst-Code:
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);
}
}
}
Mein ASPX-Code:
<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>
Wenn ich auf die Schaltfläche klicke, scheint nichts zu passieren. Ich würde einen Fehler oder eine Zeichenfolge als Antwort erwarten. Die Verwendung von FireBug und ServiceCapture zeigt nichts an. ServiceCapture zeigt keine Anforderungen, die herauskommen.
Eine etwas andere Frage: Was muss ich tun, damit eine Flash- und/oder Flex-Anwendung den Dienst korrekt aufruft? Ich mache weder das eine noch das andere und bin daher neugierig, wie der Befehl aussehen sollte (um unseren Flash-/Flex-Entwicklern ein Beispiel zu geben, mit dem sie arbeiten können).
Irgendwelche Hinweise, Tipps, Tricks?
Ich vergaß zu erwähnen, dass ich eine Anleitung verwendet habe, die unter http://www.pluralsight.com/community/blogs/fritz/archive/2008/01/31/50121.aspx
Aus meiner 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>
Verzeihen Sie mir - ich weiß nicht genau, wonach Sie gesucht haben. Ich habe auch die Abschnitte weggelassen, die no ändern, wenn ich WCF hinzufüge.
<%@ ServiceHost Language="C#"
Debug="true"
Service="RivWorks.Web.Services.PlayerService"
CodeBehind="PlayerService.svc.cs" %>
Nicht ganz eine Übereinstimmung...