gpt4 book ai didi

wcf - 添加WCF服务引用时,配置详细信息不会添加到web.config中

转载 作者:行者123 更新时间:2023-12-04 04:27:27 25 4
gpt4 key购买 nike

我正在尝试使用VS2010向我的Web应用程序添加WCF服务引用。似乎添加了OK,但是web.config没有更新,这意味着我得到了运行时异常:

Could not find default endpoint element that references contract 'CoolService.CoolService' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.



显然,因为该服务未在我的web.config中定义。重现步骤:
  • 右键单击解决方案>添加>新建项目> ASP.NET空Web应用程序。
  • 右键单击新Web应用程序中的“服务引用”>“添加服务引用”。
  • 输入我的服务地址,然后单击“转到”。我的服务在左侧的“服务”部分中可见,并且可以看到其所有操作。
  • 键入我的服务的 namespace 。
  • 单击确定。服务引用已正确生成,我可以打开Reference.cs文件,并且一切正常。
  • 打开web.config文件。 它仍然是空的!

    <system.web>
    <compilation debug="true" targetFramework="4.0" />
    </system.web>


    <system.serviceModel>
    <bindings />
    <client />
    </system.serviceModel>


  • 为什么会这样呢?控制台应用程序或我尝试的任何其他项目类型也会发生这种情况。有什么帮助吗?

    这是我的WCF服务中的app.config:
    <?xml version="1.0"?>

    <configuration>

    <system.web>
    <compilation debug="true" />
    </system.web>
    <!-- When deploying the service library project, the content of the config file must be added to the host's
    app.config file. System.Configuration does not support config files for libraries. -->
    <system.serviceModel>

    <services>

    <service name="CoolSQL.Server.WCF.CoolService">

    <endpoint address=""
    binding="webHttpBinding"
    contract="CoolSQL.Server.WCF.CoolService"
    behaviorConfiguration="SilverlightFaultBehavior">
    <identity>
    <dns value="localhost" />
    </identity>
    </endpoint>

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

    <host>
    <baseAddresses>
    <add baseAddress="http://localhost:8732/Design_Time_Addresses/CoolSQL.Server.WCF/CoolService/" />
    </baseAddresses>
    </host>

    </service>

    </services>

    <behaviors>
    <endpointBehaviors>
    <behavior name="webBehavior">
    <webHttp />
    </behavior>
    <behavior name="SilverlightFaultBehavior">
    <silverlightFaults />
    </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
    <behavior name="">
    <serviceMetadata httpGetEnabled="true" />
    <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
    </serviceBehaviors>
    </behaviors>

    <bindings>

    <webHttpBinding>
    <binding name="DefaultBinding"
    bypassProxyOnLocal="true"
    useDefaultWebProxy="false"
    hostNameComparisonMode="WeakWildcard"
    sendTimeout="00:05:00"
    openTimeout="00:05:00"
    receiveTimeout="00:00:10"
    maxReceivedMessageSize="2147483647"
    transferMode="Streamed">
    <readerQuotas maxArrayLength="2147483647"
    maxStringContentLength="2147483647" />
    </binding>
    </webHttpBinding>

    </bindings>

    <extensions>
    <behaviorExtensions>
    <add name="silverlightFaults"
    type="CoolSQL.Server.WCF.SilverlightFaultBehavior, CoolSQL.Server.WCF" />
    </behaviorExtensions>
    </extensions>

    <diagnostics>
    <messageLogging logEntireMessage="true"
    logMalformedMessages="false"
    logMessagesAtServiceLevel="true"
    logMessagesAtTransportLevel="false"
    maxMessagesToLog="3000"
    maxSizeOfMessageToLog="2000" />
    </diagnostics>

    </system.serviceModel>

    <startup>
    <supportedRuntime version="v4.0"
    sku=".NETFramework,Version=v4.0" />
    </startup>

    <system.diagnostics>
    <sources>
    <source name="System.ServiceModel.MessageLogging"
    switchValue="Information, ActivityTracing">
    <listeners>
    <add name="messages"
    type="System.Diagnostics.XmlWriterTraceListener"
    initializeData="c:\messages.e2e" />
    </listeners>
    </source>
    </sources>
    </system.diagnostics>

    </configuration>

    最佳答案

    我发现了解决方法。我的WCF服务是在自己的项目中实现的,并由同一解决方案中的单独控制台应用程序托管。如果我将WCF服务作为解决方案的启动项目运行(例如,让VS为我托管),则添加引用的效果很好,并且将正确的行添加到了客户端web.config。但是,如果我在控制台应用程序中托管服务,尽管我仍然可以添加引用,但客户端的web.config不会被修改。因此,一种解决方法是首先让VS托管服务,然后添加引用,然后更改要在控制台应用程序中托管的服务(在相同的地址和端口)。

    这是令人惊讶的行为,我很好奇是否有人可以对此有所了解?

    关于wcf - 添加WCF服务引用时,配置详细信息不会添加到web.config中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4621523/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com