如何使用WCF服务?

时间:2018-11-08 02:22:38

标签: wcf

当我创建一个新的WCF服务时,我可以创建一个像这样的新方法:

 [OperationContract]
 [WebInvoke(Method = "GET", UriTemplate = "TryThis", ResponseFormat = WebMessageFormat.Json)]
 string TryThis();

一个返回简单字符串的函数。

我可以将其与测试客户端WCF一起使用,并且可以正常工作。但是,当我想使用Chrome,邮递员或我的Android应用程序访问我的服务时,就不能。

我尝试使用这些网址:

 http://localhost:54792/Service1.svc/TryThis
 http://tempuri.org/IService1/TryThis

当我使用“ http://localhost:54792/Service1.svc”时,我有了主页,所以可以。但是我无法使用任何服务方式。

错误是400错误。但我没有任何消息指出此错误在哪里。我不知道这是我的IIS服务器的配置,如果这是我的服务。我完全被封锁了。

这是我的web.config

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
   <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
   </appSettings>
    <system.web>
     <compilation debug="true" targetFramework="4.7.1" />
     <httpRuntime targetFramework="4.7.1"/>
    </system.web>
    <system.serviceModel>
     <behaviors>
       <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
       </serviceBehaviors>
     </behaviors>
     <protocolMapping>
         <add binding="basicHttpsBinding" scheme="https" />
     </protocolMapping>    
     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    </system.serviceModel>
   <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
     <directoryBrowse enabled="true"/>
   </system.webServer>
 </configuration>

PS:我已经看过这篇文章:“ How Can I access WCF services using a Web Reference?”,但这对我没有帮助。

1 个答案:

答案 0 :(得分:2)

似乎您在IIS中托管WCF服务,并且想要发布Restful风格的服务,可以参考以下代码。
服务器:IService.cs

namespace WcfService5
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebGet]
        string GetData(int value);
    }
}

Server:Service.svc.cs

namespace WcfService5
{
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }
    }
}

Web.config。

<system.serviceModel>
    <services>
      <service name="WcfService5.Service1">
        <endpoint address="" binding="webHttpBinding" contract="WcfService5.IService1" behaviorConfiguration="MyRest"></endpoint>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="MyRest">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

结果。 enter image description here

请随时告诉我是否有什么可以帮忙的。