javascript - 从显示 ServiceName 未定义的 javascript 调用 WCF 后
问题描述
在我的本地系统中,一切正常。当我部署到服务器时问题就开始了。尝试了很多事情都没有运气。任何帮助将不胜感激。
<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;
}
}
解决方案
此问题是由于 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>
如果有什么我可以帮忙的,请随时告诉我。
推荐阅读
- ubuntu - Jenkins 没有通过 ssh 部署构建工件
- amazon-web-services - 使用 AWS CLI 命令向 IAM 用户添加多个组
- android - 约束布局以拉伸到屏幕边缘
- python - AWS EC2 集群上的工作人员在一些迭代后引发 RayOutOfMemory 错误?
- oracle - 远程访问 AWS EC2 上的 Oracle 实例
- javascript - 无法绑定,因为它不是选择器组件的已知属性
- java - 使用 Spring 数据 JpaRepository 获取给定元素的特定页面
- python - 通过检查多列的条件来创建新变量
- vnc-server - 如何使用不同的网络访问谷歌珊瑚
- qt - 递归函数不会过早退出