我有一个asp.net应用程序,我在其中使用“在AJAX中调用WCF服务操作”方法。我没有IIS中的服务托管完成了我的工作。我得到了正确的解决方案。但现在,我有另一个要求,我正在使用托管在本地主机iis上的WCF服务。但是在单击按钮时,我得到了一个像预期的对象一样的javascript错误。我不知道为什么会这样? 我的代码如下所示。
<fieldset style="width: 804px" align="center">
<legend>Consuming WCF Service using Client-Side AJAX</legend>
<div align="left" style="text-align: center">
<form id="form1" runat="server">
<asp:ScriptManager ID="SM1" runat="server">
<Services>
<asp:ServiceReference Path="http://localhost/WCFService/Service1.svc" />
<%--~/Service1.svc--%>
</Services>
</asp:ScriptManager>
<input id="addNum1" type="text" size="3" />
+
<input id="addNum2" type="text" size="3" />
=
<input id="addAnswer" type="text" size="3" /><br />
<input id="btnAddition" type="button" value="Do Addition" onclick="DoAddition()" />
<br />
<br />
<input id="subtractNum1" type="text" size="3" />
-
<input id="subtractNum2" type="text" size="3" />
=
<input id="subtractAnswer" type="text" size="3" /><br />
<input id="btnSubtraction" type="button" value="Do Subtraction" onclick="DoSubtraction()" />
<br />
<br />
</form>
</div>
</fieldset>
<script language="javascript" type="text/javascript">
function DoAddition() {
Service1.Add(document.getElementById('addNum1').value, document.getElementById('addNum2').value, onAddSuccess);
}
function DoSubtraction() {
Service1.Subtract(document.getElementById('subtractNum1').value, document.getElementById('subtractNum2').value, onSubtractSuccess);
}
function onAddSuccess(result) {
document.getElementById('addAnswer').value = result;
}
function onSubtractSuccess(result) {
document.getElementById('subtractAnswer').value = result;
}
javascript错误消息是这样的
请帮我解决这个问题。
答案 0 :(得分:1)
问题在于诸如Service1.Add..
之类的java脚本。生成的js代理的名称不是Service1,因此也是问题。代理对象的名称将为[Namespace].[Contract Name]
形式,其中服务的名称空间由ServiceContract属性的Namespace参数声明。如果您尚未指定,则默认值为“tempuri.org
”。例如,如果您的服务定义为
[ServiceContract(Namespace="Samples.Services")]
public class Service1
{
[OperationContract]
public void Add(...
然后在js中,您需要使用Sample.Services.Service1.Add