【问题标题】:After calling WCF from javascript showing ServiceName not define从显示 ServiceName 未定义的 javascript 调用 WCF 后
【发布时间】:2020-01-26 20:58:12
【问题描述】:

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

<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 未定义。

这是我的 webconfig 部分:

<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;

            }
}

【问题讨论】:

    标签: javascript asp.net wcf


    【解决方案1】:

    此问题是由于 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>
    

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

    【讨论】:

    • 帮助很大,谢谢。了解无扩展名网址。发现我没有激活 WCF 服务的 HTTP 激活。现在一切正常。
    猜你喜欢
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2021-02-26
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多