2012-01-06 84 views
6

好的,我的文件有這樣的結構。wcf web.config文件

<system.serviceModel> 
    <services> 
     <service name="ManyaWCF.ServiceManya" behaviorConfiguration="ServiceBehaviour"> 
      <!-- Service Endpoints --> 
      <!-- Unless fully qualified, address is relative to base address supplied above --> 
      <endpoint address="" binding="webHttpBinding" contract="ManyaWCF.IServiceManya" behaviorConfiguration="web"> 
       <!-- 
      Upon deployment, the following identity element should be removed or replaced to reflect the 
      identity under which the deployed service runs. If removed, WCF will infer an appropriate identity 
      automatically. 
     --> 
      </endpoint> 
     </service> 

    </services> 
    <behaviors> 
     <serviceBehaviors> 
      <behavior name="ServiceBehaviour"> 
       <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
       <serviceMetadata httpGetEnabled="true" /> 
       <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
       <serviceDebug includeExceptionDetailInFaults="false" /> 
      </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
      <behavior name="web"> 
       <webHttp /> 
      </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 

我得到了在其他WCF相同的web.config和工作就像一個冠軍,OFC具有不同的文件夾和文件。 我的文件夾結構如下。

enter image description here

當我嘗試打它,我得到這個,

Service 

This is a Windows © Communication Foundation. 

The metadata publishing for this service is currently disabled. 

If you access the service, you can enable metadata publishing by completing the following steps to modify the configuration file or web application: 

1. Create the following service behavior configuration, or add the item to a configuration <serviceMetadata> existing service behavior: 

<behaviors> 
<serviceBehaviors> 
    <behavior name="MyServiceTypeBehaviors"> 
     httpGetEnabled="true" <serviceMetadata /> 
    </ Behavior> 
</ ServiceBehaviors> 
</ Behaviors> 
2. Add the behavior configuration to the service: 

    name="MyNamespace.MyServiceType" <service behaviorConfiguration="MyServiceTypeBehaviors"> 
    Note: The service name must match the name of the configuration for the service implementation. 

3. Add the following to end service configuration: 

binding="mexHttpBinding" contract="IMetadataExchange" <endpoint address="mex" /> 
Note: the service must have an http base address to add this. 

Here is an example of a service configuration file with metadata publishing enabled: 

<configuration> 
<system.serviceModel> 

    <services> 
     <! - Note: the service name must match the name of the configuration for the service implementation. -> 
     name="MyNamespace.MyServiceType" <service behaviorConfiguration="MyServiceTypeBehaviors"> 
      <! - Add the following end. -> 
      <! - Note: the service must have an http base address to add this. -> 
      binding="mexHttpBinding" contract="IMetadataExchange" <endpoint address="mex" /> 
     </ Service> 
    </ Services> 

    <behaviors> 
     <serviceBehaviors> 
      <behavior name="MyServiceTypeBehaviors"> 
       <! - Add the following item to the service behavior configuration. -> 
       httpGetEnabled="true" <serviceMetadata /> 
      </ Behavior> 
     </ ServiceBehaviors> 
    </ Behaviors> 

</ System.serviceModel> 
</ Configuration> 

    For more information about publishing metadata, see the following documentation: http://go.microsoft.com/fwlink/?LinkId=65455 (may be in English). 

所以,我只是做1個WCF並與同web.conif工作的罰款。我的運氣和關於這方面的知識正在殺死我。 任何線索?

Thx提前。

回答

4

據我所知,如果要將WSDL公開給客戶端,只需要使用mexHttpBinding的端點。 Visual Studio(或wcfutil.exe)需要WSDL描述來創建Web服務客戶端類。

創建這些webservice客戶端類後,您不需要再公開WSDL。

UPDATE:在配置文件中的<service>元素應該是這樣的:

<service name="ManyaWCF.ServiceManya" behaviorConfiguration="ServiceBehaviour"> 
    <endpoint address="" binding="webHttpBinding" 
     contract="ManyaWCF.IServiceManya" behaviorConfiguration="web" /> 

    <endpoint address="mex" binding="mexHttpBinding" 
     contract="IMetadataExchange" /> 
</service> 
+0

哼。我可以看到代碼上的mexhttp綁定。我無法看到是否有錯誤或需要機會 – 2012-01-07 00:07:16

+0

@Guillermo - 我沒有看到配置文件中啓用了mex端點。也許下面的文章有所幫助:http://blogs.msdn.com/b/brajens/archive/2007/04/26/accessing-description-metadata-wsdl-of-wcf-web-service.aspx – 2012-01-07 00:14:25

+0

不是這樣, ?? – 2012-01-07 00:18:16

-2
<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <httpRuntime maxRequestLength="1048576" executionTimeout="3600" /> 
    </system.web> 
    <appSettings> 
    </appSettings> 
    <connectionStrings> 
    <add name="SQLConnect" connectionString="Your_Connection_String";User id=sa;Password=welcome3#"/> 
    </connectionStrings> 
    <system.serviceModel> 
    <services> 
     <service name="WCFRestService.RestServiceSvc" behaviorConfiguration="serviceBehavior"> 
     <endpoint address="" bindingConfiguration="secureHttpBinding" binding="webHttpBinding" contract="WCFRestService.IRestServiceSvc" behaviorConfiguration="web"></endpoint> 
     </service> 
    </services> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp /> 
     </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
     <behavior name="serviceBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

    <bindings> 
     <webHttpBinding> 
     <binding name="secureHttpBinding" 
      maxBufferPoolSize="2147483647" 
      maxReceivedMessageSize="2147483647" 
      maxBufferSize="2147483647" transferMode="Streamed">  
     </binding> 
     </webHttpBinding> 
    </bindings> 

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    <httpProtocol> 
     <customHeaders>  
     </customHeaders> 
    </httpProtocol> 
    <security> 
     <requestFiltering> 
     <requestLimits maxAllowedContentLength="1073741824" /> 
     </requestFiltering> 
    </security> 
    <directoryBrowse enabled="true" /> 
    </system.webServer> 
    <system.web.extensions> 
    <scripting> 
     <webServices> 
     <jsonSerialization maxJsonLength="50000000"/> 
     </webServices> 
    </scripting> 
    </system.web.extensions> 
</configuration> 
+0

您的答案雖然提供了正確的示例,但並不能幫助解答OP問題。會推薦提供更多的細節。 – PseudoNinja 2017-11-27 20:46:54