1. 程式人生 > >Wcf 服務http請求總結

Wcf 服務http請求總結

最近有機會接近WCF 服務,但公司要求修改為http請求的時候發現一些問題,自己總結出來

環境使用的是vs2015 

新增專案的時候:需要選擇wcf應用程式

其次,新增完專案後需要修改方法

第三,需要修改配置檔案

  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="webBinding"/>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="WcfService2.Service1" behaviorConfiguration="serviceBehavior">
        <endpoint address="" behaviorConfiguration="webBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="WcfService2.IService1"/>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="webBehavior">
          <!--這裡必須設定-->
          <webHttp/>
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="serviceBehavior">
          <!-- 為避免洩漏元資料資訊,請在部署前將以下值設定為 false -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- 要接收故障異常詳細資訊以進行除錯,請將以下值設定為 true。在部署前設定為 false 以避免洩漏異常資訊 -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
        若要在除錯過程中瀏覽 Web 應用程式根目錄,請將下面的值設定為 True。
        在部署之前將該值設定為 False 可避免洩露 Web 應用程式資料夾資訊。
      -->
    <directoryBrowse enabled="true"/>
  </system.webServer>

第四,需要修改專案的屬性,這個算是最重要的

需要把整合修改為經典

第五,訪問

 static void Main(string[] args)
        {
            string rvalue = GetHttpResponse("http://localhost:23444/Service1.svc/GetRS/122/第二個引數", 2000);
        }

        public static string GetHttpResponse(string url, int Timeout)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "textml;charset=UTF-8";
            request.UserAgent = null;
            request.Timeout = 6000;

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

            return retString;
        }