После вызова WCF из JavaScript с указанием ServiceName не определить - PullRequest
1 голос
/ 26 сентября 2019

В моей локальной системе все работает нормально. Проблема началась, когда я развернулся на сервере.Перепробовал много вещей не повезло.Мы будем благодарны за любую помощь.

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;

            }
}

1 Ответ

0 голосов
/ 27 сентября 2019

Эта проблема связана с обработчиками URL-адресов без расширений в IIS, в результате чего веб-служба не может распознать.
См. Решение в приведенной ниже ссылке.
https://support.microsoft.com/zh-cn/help/2520479/web-services-may-fail-on-microsoft-internet-information-services-iis-7
Кроме того, существует обходной путьдля этой проблемы.мы могли бы использовать заполненный URL-адрес для замены относительного адреса при регистрации службы в элементе управления ScriptManager.

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

Не стесняйтесь сообщить мне, если есть что-то, с чем я могу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...