我创建了一个WCF服务。
在 WSDL 中,我看不到服务应绑定的 URL 和端口。
我看到的只是:
<wsdl:service name="SimpleWebService"/>
知道我做错了什么吗?也许在web.config中有什么东西?
<system.serviceModel>
<client />
<bindings>
<webHttpBinding>
<binding closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" />
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="WS.OS.SimpleWS" behaviorConfiguration="myServiceBehavior">
<endpoint name="webHttpBinding" address="" binding="webHttpBinding" contract="WS.OS.SimpleWS" behaviorConfiguration="webHttp" />
<endpoint name="mexHttpBinding" address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="myServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
使用 webHttpBinding 创建端点会创建一个 REST 端点。REST 端点没有 wsdl。在您的情况下,您会看到 wsdl 生成,因为您包含了元数据行为。WSDL 中将列出一个终结点,该终结点仅针对 SOAP 终结点。这是一个很好的博客文章,可以帮助您更好地理解这一点:http://blogs.msdn.com/b/carlosfigueira/archive/2012/03/26/mixing-add-service-reference-and-wcf-web-http-a-k-a-rest-endpoint-does-not-work.aspx
查看问题和配置,我假设(我们都知道这会导致什么)您的服务托管在 IIS 中。 因此,给定"的地址并且没有给出端口,您必须查看IIS设置以查找站点和打开服务的端口。 http 的定义是 80,https 是 443。
快速示例,如果您的服务位于 IIS 的"默认网站"上,那么您的服务可能位于:
http://YourServer/YourService/YourService.svc
如果托管在那里的 Web 应用程序位于特定不同的站点下,则需要查看 IIS 的设置才能找到它。 通常,IIS 将 SVC 托管为默认页面,因此 URI 中可以只包含前两部分,而不是实际页面。 我认为除非你开始挖掘你的网络服务器,否则你不会有太多的运气。