【问题标题】:Configuring a web service endPoint and contract from C# code?从 C# 代码配置 Web 服务端点和合同?
【发布时间】:2010-10-15 21:30:47
【问题描述】:

编辑:我决定将其转换为普通网页,因为我只需要提供一个整数参数并检索一个字符串。

如果有人有好的答案,我会留下问题。


我有一个我想调用的 Web 服务,但是因为它必须从插件调用到另一个系统,所以包含所有配置的应用程序配置文件不会这样做,因为插件系统不会读取它文件,只是 DLL。

那么,问题是,我如何从配置文件中获取相关部分并将其转换为代码?

我可能需要转换的部分是:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="TooltipServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
                receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost:2952/TooltipService.asmx"
            binding="basicHttpBinding" bindingConfiguration="TooltipServiceSoap"
            contract="TooltipService.TooltipServiceSoap" name="TooltipServiceSoap" />
    </client>
</system.serviceModel>

URL 等当然会改变,但我要弄清楚是否有人能指出正确的方向,告诉我如何将必要的代码放入应用程序,这样如果我删除应用程序配置文件,它仍然可以工作。

【问题讨论】:

  • WCF,从配置中获得的痛苦与它所获得的一样多……在某些方面,旧的 WSE/WSDL Web 服务要简单得多——甚至像 protobuf-net 这样的东西也提供基于合同的服务RPC/http 通道。您可以完全通过代码来完成 WCF,但这并不总是那么简单。
  • 我找到了几个网页,但看起来像黑魔法,所以我只是将当前代码转换为网页。我只需要一个来自 ID 的纯文本字符串,并且出于安全考虑,“服务”只是为了将一些系统彼此分开。

标签: c# web-services configuration


【解决方案1】:

我在web.config 文件中使用以下配置通过 REST 服务上传超过 64 KB(默认)的文件。

<system.serviceModel>
    <services>
      <service name="Service">
        <endpoint
          address=""
          binding="webHttpBinding" bindingConfiguration="FileTransferServicesBinding"
          contract="IService"/>
      </service>
    </services>
    <bindings>
      <webHttpBinding >
        <binding name="FileTransferServicesBinding" maxBufferSize="10242880"  maxReceivedMessageSize="10242880">
          <readerQuotas maxStringContentLength="10242880"  maxArrayLength="10242880" />
        </binding>
      </webHttpBinding>
    </bindings>
  </system.serviceModel>


<system.web>
    <httpRuntime maxRequestLength="65536" executionTimeout="36000"/>
</System.Web>

【讨论】:

    【解决方案2】:

    这是一个类似的问题,可能会有所帮助:Making WCF easier to configure

    我希望有一个需要很少或不需要客户端配置的应用程序 - 只需将其指向服务器并连接即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2013-03-12
      • 2014-11-23
      • 1970-01-01
      相关资源
      最近更新 更多