javascript - 从 javascript 调用 WCF 后显示服务名称未定义

标签 javascript asp.net wcf

在我的本地系统中,一切正常。当我部署到服务器时,问题就开始了。尝试了很多事情都没有运气。任何帮助将不胜感激。

enter image description here

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
            <Services>
                <asp:ServiceReference Path="~/Services/WebChatWCFService.svc" />
            </Services>
        </asp:ScriptManager>

WebChatWCFService.ClientRecieveMessage(vSno, TokenNo, UpdateMessageSuccessCallBack, UpdateMessageFaileCallBack);

错误是:WebChatWCFService 未定义。

这是我的网络配置部分:

<behaviors>
  <endpointBehaviors>
    <behavior name="WebChatWCFServiceAspNetAjaxBehavior">
      <enableWebScript />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="Ileverage2k10.Services.WebChatWCFServiceAspNetAjaxBehavior">
      <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
  <service name="Ileverage2k10.Services.WebChatWCFService" behaviorConfiguration="Ileverage2k10.Services.WebChatWCFServiceAspNetAjaxBehavior">
    <endpoint address="" behaviorConfiguration="WebChatWCFServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="Ileverage2k10.Services.WebChatWCFService" />
  </service>
</services>

在我的 WCF 中:命名空间:Ileverage2k10.Services

 [ServiceContract(Namespace = "",
            SessionMode = SessionMode.Allowed)]
        [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
        public class WebChatWCFService
        {
             [OperationContract]
            public List<DClientTempDataContract> ClientRecieveMessage(int vSno, int vTokenNo)
            {
                List<DClientTempDataContract> result = new List<DClientTempDataContract>();

                List<dclienttemp> messageList =
                    LinqClinetFilter.ClientReceiveMessage(vSno, vTokenNo);

                foreach (dclienttemp msg in messageList)
                {
                    result.Add(new DClientTempDataContract(msg));
                }

                return result;

            }
}

最佳答案

此问题是由于 IIS 中的无扩展 URL 处理程序导致 Web 服务无法识别。
请引用以下链接中的解决方案。
https://support.microsoft.com/zh-cn/help/2520479/web-services-may-fail-on-microsoft-internet-information-services-iis-7
此外,这个问题还有一个解决方法。我们可以在 ScriptManager 控件中注册服务时使用完整的 URL 来替换相对地址。

<asp:ScriptManager ID="ScriptManager1" runat="server">
            <Services>
                <asp:ServiceReference Path="http://localhost:56697/Content/CostService.svc" />
            </Services>
        </asp:ScriptManager>

如果有什么需要我帮忙的,请随时告诉我。

关于javascript - 从 javascript 调用 WCF 后显示服务名称未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58119193/

相关文章:

javascript - Object.assign 与赋值 (=)

Asp.net电子商务性能

c# - 在一台服务主机中托管多个服务?

C#:使用 "self"类型作为泛型参数?

javascript - 如何找到浏览器中断一段文本的位置

javascript - 使用构造函数创建 JavaScript 对象的 Getters 和 Setters

c# - 检查每个页面的登录

c# - 需要从数据库生成 ASP.NET 控件

c# - 未在客户端调用 WCF 回调并在服务器端挂起

javascript - D3.js csv 文件中的列顺序错误