Javascript WCF服务在本地工作,但在服务器上提供404
我看过很多关于这方面的帖子,但似乎都找不到答案 [免责声明:我对WCF了解不多-虽然我可以访问代码,但这是我正在尝试连接的现有项目。] 我已经创建了一个html/javascript客户端来访问现有的WCF服务API。每个都是独立的应用程序,因此当我在本地运行时,客户端和服务器都在本地主机上运行,但端口号不同。这很有效。客户端应用程序可以通过以下调用调用WCF服务:https://localhost:4435/sessions.svc/getsession?sessionPK=3. 当我在一台服务器上安装这两个应用程序时,这两个应用程序都作为不同的虚拟应用程序运行在同一台服务器上,服务确实在运行-我可以点击https://myserver.com/api/sessions.svc 从网络浏览器中,我从服务返回一个页面,告诉我它正在工作 但是,现在当客户端尝试以与本地相同的方式访问服务时https://myserver.com/api/sessions.svc/getsession?sessionPK=3,我得到一个404未找到错误 客户端和WCF服务都托管在具有相同根域的同一台服务器上,因此CORS不应该成为问题 以下是一些代码片段: **WCF服务** [服务合同] 公共接口会话 { [经营合同] [WebInvokeMethod=GET,RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Wrapped] 字符串GetSessionint?sessionPK; [AspNetCompatibilityRequirementsRequirementsMode=AspNetCompatibilityRequirementsMode.Allowed] 公开课程:基本服务、ISessions { 公共字符串GetSessionint sessionPK { ... } } **服务的Web.Config** **客户** 导出类数据服务{ 构造函数私有http:HttpClient{ this.http.configureconfig=>{ config.withBaseUrlhttps://myserver.com/api/; config.withHeaderAccept,application/json; config.withHeaderContent-Type,application/json; config.withCredentialstrue; } } 公共异步GetSessionById:number=0{ 试一试{ 让result=this.http.get`sessions.svc/getsession?sessionPK=${id}`; if!result.issucess 投掷反应; ... } 错误:有吗{ ... } } 更新 对于Peter,我也得到了同样的回应https://myserver.com/api/sessions.svc 就像我从https://myserver.com/api/sessions.svc?wsdl. 这是一个这样的页面:Javascript WCF服务在本地工作,但在服务器上提供404,javascript,c#,wcf,Javascript,C#,Wcf,我看过很多关于这方面的帖子,但似乎都找不到答案 [免责声明:我对WCF了解不多-虽然我可以访问代码,但这是我正在尝试连接的现有项目。] 我已经创建了一个html/javascript客户端来访问现有的WCF服务API。每个都是独立的应用程序,因此当我在本地运行时,客户端和服务器都在本地主机上运行,但端口号不同。这很有效。客户端应用程序可以通过以下调用调用WCF服务:https://localhost:4435/sessions.svc/getsession?sessionPK=3. 当我在一
该服务似乎没有返回其公开的操作列表。顺便说一句,它在本地主机上的执行方式完全相同。如果CORS不是问题,则访问服务的URI或格式可能错误。您可以在该服务中打开帮助文档,查看如何请求接口:
<endpointBehaviors>
<behavior name="ESEndPointBehavior">
<webHttp helpEnabled="true"/>
</behavior>
</endpointBehaviors>
[OperationContract]
[WebGet(UriTemplate = "user/?name={name}",RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Result GetUserData(string name);
我没有将bodystyle设置为WebMessageBodyStyle.Wrapped,因为WebMessageBodyStyle.Wrapped主要用于封装body,但get方法中没有body。并设置WebMessageBodyStyle。Wrapped帮助文档将不会生成正确的请求格式。如下所示:
普通帮助文档应如下所示:
它包含请求的URI和格式。结果是,我在服务器上本地运行HTTP和HTTPS。我通过添加以下内容解决了问题:
您是否检查了当您点击url时显示的wsdl文件是否包含getsession消息?@PeterCsala,请查看我的更新以了解详细信息,请尝试使用mex,而不是wsdl,因为您是使用mex而不是wsdl公开的。