Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在AJAX中调用WCF服务操作_C#_Javascript_Asp.net_Ajax_Wcf - Fatal编程技术网

C# 在AJAX中调用WCF服务操作

C# 在AJAX中调用WCF服务操作,c#,javascript,asp.net,ajax,wcf,C#,Javascript,Asp.net,Ajax,Wcf,我有一个asp.net应用程序,其中我使用“在AJAX中调用WCF服务操作”方法。我在IIS中没有托管服务的情况下完成了工作。我找到了正确的解决办法。但现在,我有另一个要求,即我使用托管在本地主机iis上的WCF服务。但在单击按钮时,我得到了一个javascript错误,与预期的对象类似。我不知道为什么会这样? 我的代码如下所示 <fieldset style="width: 804px" align="center"> <legend>Consuming WCF

我有一个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;
}

使用客户端AJAX使用WCF服务
+
=



- =


函数DoAddition(){ Service1.Add(document.getElementById('addNum1')。value,document.getElementById('addNum2')。value,onAddSuccess); } 函数DoSubtraction(){ 服务1.Subtract(document.getElementById('subtractNum1')。值,document.getElementById('subtractNum2')。值,onSubtractSuccess); } 函数onAddSuccess(结果){ document.getElementById('addAnswer')。value=result; } SubtractSuccess上的函数(结果){ document.getElementById('subtractAnswer')。值=结果; }

javascript错误消息如下所示


请帮助我解决此问题。

问题与java脚本有关,如
Service1.Add..
。生成的js代理的名称将不是Service1,因此会出现问题。代理对象的名称的形式为服务的
[Namespace].[Contract name]
where Namespace,由ServiceContract属性的Namespace参数声明。如果尚未指定,则默认值为“
tempuri.org
”。例如,如果您的服务定义为

[ServiceContract(Namespace="Samples.Services")]
public class Service1
{
  [OperationContract]
  public void Add(...
然后在js中,您需要使用
Sample.Services.Service1.Add

这是有效的URL吗?能在浏览器中浏览吗?