1

このエラーに 1 週​​間取り組んできましたが、検索してもまだ解決できません。エラーは次のとおりです。

リモート サーバーが予期しない応答を返しました: (400) 不正な要求。

WCF を使用して Windows phone アプリから画像を保存しようとしましたMaxReceivedMessageSizeが、既定値よりも高い値を設定する必要があることがわかっています。私はすべてを試しましたが、運はありませんでした!

マイweb.configファイル (wcf サービス)

<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService1"
                maxReceivedMessageSize="2147483647"
                maxBufferSize="2147483647"
                maxBufferPoolSize="2147483647"
                hostNameComparisonMode="StrongWildcard"
                receiveTimeout="00:10:10"
                sendTimeout="00:10:00"
                openTimeout="00:10:00"
                closeTimeout="00:10:00"
                transferMode="Buffered"
                messageEncoding="Text"
                textEncoding="utf-8"
                bypassProxyOnLocal="false"
                useDefaultWebProxy="true" >
          <readerQuotas
             maxDepth="2147483647"
             maxStringContentLength="2147483646"
             maxArrayLength="2147483647"
             maxBytesPerRead="2147483647"
             maxNameTableCharCount="2147483647"/>
        </binding>
      </basicHttpBinding>
    </bindings>
   <services>
     <service name="Service1" behaviorConfiguration="Service1Behavior">
       <endpoint
          address=""
         binding="basicHttpBinding"
          bindingConfiguration="BasicHttpBinding_IService1"  
          contract="IService1" />
        <endpoint
          address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange"
        />
     </service>
   </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Service1Behavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
</configuration>

私のWindows Phoneアプリケーションには、ServiceReferences.ClientConfig

<configuration>
   <system.serviceModel>
      <bindings>
         <basicHttpBinding>
            <binding name="BasicHttpBinding_IService1" maxBufferSize="2147483647"
                    maxReceivedMessageSize="2147483647">
               <security mode="None" />
            </binding>
         </basicHttpBinding>
       </bindings>
       <client>
            <endpoint address="http://localhost:1772/Service1.svc" 
                binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1" 
                contract="ServiceReference1.IService1"
                name="BasicHttpBinding_IService1" />
       </client>
   </system.serviceModel>
</configuration>

また、コードでバインディングを設定しようとしています:

BasicHttpBinding binding = new BasicHttpBinding();
binding.MaxReceivedMessageSize = 2147483647;
binding.MaxBufferSize = 2147483647;

EndpointAddress endpointAddress = new EndpointAddress("http://localhost:1772/Service1.svc");

Service1Client  proxy = new Service1Client(binding, endpointAddress);

これを修正する方法が本当にわかりません...サーバーが私のweb.configファイルを使用していないようです??? その場合、どうすれば更新できますか?

4

2 に答える 2

0

一見するとすべて問題ないように見えますが、サービス名が奇妙であるためにサービス構成が取得されていないという予感があったことを除けば....

あなたが持っている:

 <service name="Service1" >

あなたのサービス クラス (サービス コントラクトを実装するもの) は本当に呼び出されService1、どの名前空間にも存在しませんか??

ノードのname=属性の値は、サービス クラスのタイプの完全修飾名である必要があります。したがって、ほとんどの場合、次のようになります。<service>

 <service name="MyNamespace.Service1" >

またはクラスが存在する.NET名前空間Service1

その名前が一致しない場合、WCF ランタイムはそのサービス構成を使用せず、WCF の既定値にフォールバックします。これにより、小さいファイルでは機能するが、大きいファイルでは失敗する理由が説明されます。

于 2012-04-14T07:09:25.790 に答える
0

これが本当に問題であることを確認する必要があります。まず、サーバー ( http://blogs.msdn.com/b/madhuponduru/archive/2006/05/18/601458.aspx )で WCF トレースをオンにして、どのようなエラーがあるかを確認します。

于 2012-04-14T01:00:01.647 に答える