wcf web.config文件

时间:2012-01-06 23:25:43

标签: c# .net wcf web-services 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,并且像champ,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工作得很好。我对exp的好运和对此的了解正在扼杀我。 任何线索?

提前谢谢。

2 个答案:

答案 0 :(得分:4)

据我所知,如果要将WSDL公开给客户端,则只需要具有mexHttpBinding的端点。 Visual Studio(或wcfutil.exe)需要WSDL描述来创建Web服务客户端类。

在创建这些Web服务客户端类之后,您不再需要公开WSDL。

更新:配置文件中的<service>元素应如下所示:

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

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

答案 1 :(得分:-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>