我已按照MSDN上的说明:向客户端脚本公开WCF服务(http://msdn.microsoft.com/en-us/library/bb514961.aspx),但该示例未显示如何实际使用javascript中的服务,这是我被卡住的地方。
我创建了一个非常简单的WCF服务:
使用System.ServiceModel; 使用System.Text; 使用System.ServiceModel.Activation;
命名空间MyNamespace {
[ServiceContract(Namespace = "MyDomain.com")]
public interface IMyService
{
[OperationContract]
void DoWork();
}
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "McCormickProdService" in code, svc and config file together.
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService : IMyService
{
public void DoWork()
{
}
}
}
我也是通过web.config更新的:
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="default"/>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="webScriptEnablingBehavior">
<enableWebScript/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service name="MyNamespace.MyService"
behaviorConfiguration="">
<endpoint address="" binding="webHttpBinding"
bindingConfiguration="default"
contract="MyNamespace.IMyService"
behaviorConfiguration="webScriptEnablingBehavior"/>
</service>
</services>
</system.serviceModel>
这是我在ASP.NET / javascript中拼凑的代码:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="false" EnableCdn="true" AjaxFrameworkMode="Explicit">
<Scripts>
<asp:ScriptReference Path="http://ajax.aspnetcdn.com/ajax/act/40412/start.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="~/Services/MyService.svc"/>
</Services>
</asp:ScriptManager>
<asp:ContentPlaceHolder ID="endbody" runat="server" />
<script type="text/javascript">
Sys.loader.defineScripts(null, [{ name: "jQueryUI", releaseUrl: "http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.9/jquery-ui.min.js", dependencies: ["jQuery"], isLoaded: !!(window.jQuery && jQuery.ui)}]);
Sys.loader.defineScripts(null, [{ name: "jQueryUIdatepickerfr", releaseUrl: "http://jquery-ui.googlecode.com/svn/trunk/ui/i18n/jquery.ui.datepicker-fr.js", dependencies: ["jQueryUI"], isLoaded: !!(window.jQuery && jQuery.ui)}]);
Sys.require([
Sys.scripts.ApplicationServices,
Sys.scripts.Templates,
Sys.scripts.DataContext,
Sys.scripts.WebServices,
Sys.scripts.jQuery,
Sys.scripts.jQueryUI,
Sys.scripts.jQueryUIdatepickerfr], function () {
MyDomain.com.IMyService.DoWork(function () { alert('success') }, function () { alert('failure') }, null);
});
</script>
当我加载页面时,我收到以下错误:
错误:'Sys.Net.WebServiceProxy'为null或不是对象 错误:对象不支持此属性或方法
备注:
希望有人出色的可以给狗骨头,因为我迷路了!
谢谢,
帕特里克
答案 0 :(得分:1)
想出一堆事情,也许这对其他人有用:
web.config中所需的只是:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" /> (or true for testing)
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
瞧!