azure - 从已部署的 WCF 服务中获取 404 但可以获取服务定义
问题描述
我写了一个 WCF 服务。我可以使用 Visual Studio WCF 测试客户端和一个小型控制台应用程序在本地成功运行和调试它。
将服务发布到 Azure 后,我可以浏览到应用服务主页并获得“嘿,应用服务开发人员!” 欢迎页面。
我还可以浏览https://<mydeployment>.azurewebsites.net/<myservice>
并获取描述如何创建测试应用程序和获取服务定义的页面。
最后,我可以浏览https://<mydeployment>.azurewebsites.net/<myservice>?wsdl
并获取显示为 xml 的服务描述,并从中创建一个测试客户端。
但是,每当我针对 Azure 部署运行测试客户端时,我都会收到 404 响应。我可以在 Azure 日志流中看到相同的 404 响应。
关于我为什么会得到 404 或如何进一步排除故障的任何建议?
解决方案
您使用哪种方式调用服务,服务端点地址是什么?我怀疑服务地址有问题。服务端点地址是相对于服务基地址的。
例如,有以下定义。
<service name="Server4.Calculator">
<endpoint address="service" binding="customBinding" contract="Server4.ICalculator" bindingConfiguration="mybinding"></endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
</service>
</services>
客户端的服务地址应该是 IIS 基地址和服务相对地址。
https://192.168.1.100:8000/service1.svc/service
一般来说,如果服务描述可用,我们可以通过添加服务引用来生成客户端代理类,服务端点会在配置文件中设置。
然后我们可以使用客户端代理类来调用服务。
ServiceReference1.ServiceClient client = new ServiceClient();
var result = client.Test();
如果有什么我可以帮忙的,请随时告诉我。
推荐阅读
- javascript - 如何强制不缓存特定的外部资源?
- python - 为什么我得到相同的预测、召回和 F1 分数?
- java - 如何初始化 Firebase 托管在 google app-engine 上的 spring-boot 应用程序
- node.js - YouTube API V3 I.1 政策限制是什么意思?
- laravel - 使用 Pusher 获取会话开始的时间
- html - 如何将传单地图设置为可能的最大高度
- sql - 像另一列一样关于列
- excel - 在 VBA 中打开不存在的工作簿时如何绕过 MS 1004 错误
- reactjs - Gatsby 和 Woocommerce API – 产品类别字段在 GraphQL 中停止同步
- html - 调整容器内 3 个 div 中的图像大小