WCF用作服务参考:怎么做?

时间:2016-04-22 09:12:27

标签: c# wcf rest soap web-reference

我的RESTful服务已托管here

我可以使用get&发布http请求完美地使用它。

我如何使用&#34;服务参考&#34;在Visual Studio项目中?我已经在我的测试项目中添加了它并且我正确地看到了方法,但是,当我尝试调用它们时,我得到&#34; 找不到引用servicemodel客户端中的契约的默认端点元素< /强>&#34;错误,使用http代码404。

所以,我试图修改我的web.config文件,但我只得到不同的错误。例如,现在我尝试添加SOAP端点,但是我收到了一个错误的请求&#34;错误。

这是我的一种方法(它们以相同的方式定义)

[OperationContract]
[WebGet(UriTemplate = "impianto.json?retista={codret}&storeID={storeID}&H={hashedString}", ResponseFormat = WebMessageFormat.Json)]
List<WrapImpianti> GetImpiantoJSON(string codret, string storeID, string hashedString);

这是web.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    <add key="ClientSettingsProvider.ServiceUri" value="" />
    <add key="ServerAddress" value="37.59.146.241:8099/isOverviewExport.svc" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="isOverviewExport.Service1" behaviorConfiguration="MyBehavior">
          <endpoint address="soap" behaviorConfiguration="soapBehavior" binding="basicHttpBinding" name="s" contract="isOverviewExport.isOverviewExport"/>

        <endpoint address="rest" behaviorConfiguration="restBehavior" binding="webHttpBinding" name="base" contract="isOverviewExport.isOverviewExport">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="SecurityByTransport" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Basic" />
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <extensions>
      <behaviorExtensions>
        <add name="CorsSupport" type="WebHttpCors.CorsSupportBehaviorElement, WebHttpCors, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      </behaviorExtensions>
    </extensions>
    <behaviors>
      <endpointBehaviors>
        <behavior name="restBehavior">
          <!--<enableWebScript/>-->
          <webHttp helpEnabled="true" />
          <CorsSupport />
        </behavior>
        <behavior name="soapBehavior">



        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior  name="MyBehavior">>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer ignoreExtensionDataObject="true" maxItemsInObjectGraph="123456" />
        </behavior>

      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
  </system.serviceModel>
  <system.webServer>

    <directoryBrowse enabled="true" />

  </system.webServer>
  <connectionStrings>
    <add name="Entities" connectionString="metadata=res://*/AccessData.Model.csdl|res://*/AccessData.Model.ssdl|res://*/AccessData.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=myds;initial catalog=mydb;persist security info=True;user id=myuser;password=mypwd;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

您也可以尝试添加服务引用(链接与上面的链接相同,http://37.59.146.241:8097/isOverviewExport.svc)。为什么这段代码的第二行会给我上面写的错误?

    var svc = new ServiceReference5.isOverviewExportClient();
    var ret = svc.GetImpiantoXML("123456", "AAA111", "test");

那么,如何在VS中将其用作服务参考?我以为我必须设置肥皂终点,但也许它不正确。你能帮助我吗? :)

0 个答案:

没有答案