2017-08-31 15 views
0

WindowsサービスによってサーバーにホストされているWCFサービスを構築しました。すべてうまく動作し、私はすでにいくつかの方法をテストしています。今、私はこの1つのように私のクライアントからのHttpRequestを送信する必要があります。エラー400:httpwebrequestの無効なリクエスト

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(String.Format(@"http://192.168.0.170:9001/myServ/Start/{0}/{1}", "blabla", "blabla")); 
req.Method = "GET"; 

問題は、私は私の要求が無効であることを述べ、クライアント側の例外を取得しておくことです。なぜ私は理解できません。

これは私のWCFサービスである:ここで

[OperationContract] 
[WebInvoke(Method = "GET", 
UriTemplate = "Start/{param1}/{param2}")] 
string Mod(string param1, string param2); 

は、私は問題を発見した私の設定

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/> 
    </appSettings> 
    <system.web> 
    <compilation debug="true"/> 
    </system.web> 
    <!-- When deploying the service library project, the content of the config file must be added to the host's 
    app.config file. System.Configuration does not support config files for libraries. --> 
    <system.serviceModel> 
    <bindings> 
     <webHttpBinding> 
     <binding maxBufferSize="2147483647" 
       maxBufferPoolSize="2147483647" 
       maxReceivedMessageSize="2147483647" 
       transferMode="Streamed" 
       sendTimeout="00:05:00" 
       name="WebHttpBinding_InotifyImp"> 
      <readerQuotas maxDepth="2147483647" 
         maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" 
         maxBytesPerRead="2147483647" 
         maxNameTableCharCount="2147483647"/> 
      <security mode="None" /> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    <services> 
     <service name="wcfImp.notifyImp" behaviorConfiguration="NewBehavior"> 
     <endpoint address="" behaviorConfiguration="DefaultEndPointBehavior" bindingConfiguration="WebHttpBinding_InotifyImp" binding="webHttpBinding" contract="wcfImp.InotifyImp"> 
      <identity> 
      <dns value="localhost"/> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:9001/notifyImp"/> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="NewBehavior"> 
      <!-- 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="True"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="DefaultEndPointBehavior"> 
      <webHttp helpEnabled="true" /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    </system.serviceModel> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/> 
    </startup> 
</configuration> 
+0

また、要求書式を渡す必要があります。この[WCF Parameterised Post Call]を試してください(https://stackoverflow.com/questions/25830289/how-to-pass-parameters-to-a-wcf-post-method-a-restful-services) –

+0

私はすでに要求書式を指定せずに投稿してください。私はなぜこの単純なGETが意図したとおりに動作していないのだろうかと思います。私の問題は、私はデバッグでサービスに到達することすらできないということです。クライアント側でこの例外が発生し続ける –

+0

私たちの設定を投稿できますか?ここにsimle GETリクエストのサンプルhttp://www.c-sharpcorner.com/UploadFile/0c1bb2/creating-wcf-rest-service/があります。 –

答えて

0

です。私はVisual Studio 2015を使用してデバッグモードでWCFサービスをホストしていて、プロセスのさまざまなステップを確認していました。なぜか分かりませんが、他のメソッドに問題がないうちに、getメソッドに関連付けられたハンドラにはロードできなかったアセンブリがあります。私はWindowsサービスでサービスをホストしようとしたが、すべて正常に動作した

関連する問題