Web服务包含空服务标记

时间:2012-11-16 13:21:26

标签: c# .net wcf wsdl wcf-configuration

我创建了一个WCF服务。

在WSDL中,我看不到服务应该绑定的URL和PORT。

我所看到的只是:

<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>

2 个答案:

答案 0 :(得分:1)

使用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

答案 1 :(得分:0)

查看问题和配置,我假设(我们都知道在哪里引导)您的服务托管在IIS中。因此,如果给出地址“”并且没有给出端口,则必须查看IIS设置以查找站点和服务打开的端口。 http的默认值为80,https为443。

如此简单的示例,如果您的服务位于IIS的“默认网站”上,那么您的服务可能位于:

http://YourServer/YourService/YourService.svc

如果存在托管在特定于不同站点下的Web应用程序,则需要查看IIS的设置以查找它。通常还有IIS将SVC作为默认页面托管,因此您可以只拥有前两个部分,而不是URI中的实际页面。除非你开始深入挖掘你的网络服务器,否则我认为你不会有太多运气。