Я пишу свой первый SVC и что-то упустил. Все отлично компилируется, но страница, похоже, ничего не возвращает из моего сервиса.
Сервисный код:
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);
}
}
}
Мой код 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>
Когда я нажимаю кнопку, кажется, ничего не происходит. Я ожидал ошибку или строку в ответ. Использование FireBug и ServiceCapture ничего не раскрывает. ServiceCapture не показывает поступающие запросы.
На несколько другой заметке - что мне нужно сделать, чтобы приложение Flash и / или Flex правильно вызывало службу? Я не делаю ни того, ни другого, поэтому мне любопытно, как должна выглядеть команда (чтобы дать нашим разработчикам flash / flex пример для работы.)
Какие-нибудь советы, подсказки, хитрости?
Забыл сказать, что я использовал учебник на http://www.pluralsight.com/community/blogs/fritz/archive/2008/01/31/50121.aspx
Из моего 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>
Простите, я не совсем понимаю, что вы искали. Я также пропустил разделы, которые не изменились при добавлении WCF.
<%@ ServiceHost Language="C#"
Debug="true"
Service="RivWorks.Web.Services.PlayerService"
CodeBehind="PlayerService.svc.cs" %>
Не совсем соответствует ...