2017-07-08 19 views
0

私はVisual Studio 2017を使用していますが、私は小さなWCF Service Application (Visual C#)と書いています。VS2017でWCFサービスをRESTfulサービスに変更するにはどうすればよいですか?

今、私はWebブラウザのメンバー関数にアクセスできるようにRESTfulにしようとしています。

これは私のIService1.csファイルです:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.ServiceModel.Web; 
using System.Text; 

namespace WcfService { 
    [ServiceContract] 
    public interface IService1 { 

     [OperationContract] 
     [WebGet(UriTemplate="/getdata",RequestFormat =WebMessageFormat.Xml,ResponseFormat =WebMessageFormat.Xml,BodyStyle =WebMessageBodyStyle.Bare)] 
     //[WebGet] 
     string GetData(); 
    } 


} 

そして、これは私のWeb.configファイルです:

<?xml version="1.0"?> 
<configuration> 

    <appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" targetFramework="4.5.2" /> 
    <httpRuntime targetFramework="4.5.2"/> 
    </system.web> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the values below to false before deployment --> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="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> 
    </behaviors> 
    <protocolMapping> 
     <add binding="basicHttpsBinding" scheme="https" /> 
    </protocolMapping>  
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <!-- 
     To browse web app root directory during debugging, set the value below to true. 
     Set to false before deployment to avoid disclosing web app folder information. 
     --> 
    <directoryBrowse enabled="true"/> 
    </system.webServer> 

</configuration> 

F5キーを押した後、私はエッジでhttp://localhost:52110/Service1.svc/getdataを訪れたが、何私が得たことはhttp 400です。

どうすれば私のサービスをhttpリクエスト経由でアクセス可能にすることができますか?

ありがとうございます。

+0

web.configに対応するエンドポイントを追加するか、プログラムで追加する必要があります。あなたにweb.configを表示する –

答えて

0

あなたは以下の通りあなたの設定でバインディング情報をチェックすることをお勧めします:

<system.serviceModel> 
    <services> 
     <service name="WcfService.Service1" behaviorConfiguration="serviceBehavior"> 
       <endpoint address="" 
          binding="webHttpBinding" 
          contract="WcfService.IService1" 
          behaviorConfiguration="web"></endpoint> 
      </service> 
    </services> 
    <behaviors> 
      <serviceBehaviors> 
       <behavior name="serviceBehavior"> 
        <serviceMetadata httpGetEnabled="true"/> 
         <serviceDebug includeExceptionDetailInFaults="false"/> 
      </behavior> 
      </serviceBehaviors> 
      <endpointBehaviors> 
       <behavior name="web"> 
        <webHttp/> 
       </behavior> 
      </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 

また、プログラムで上記の操作を行うことができます。

関連する問題