我一直在处理这个错误一周,搜索后仍无法解决。 错误是:
远程服务器返回了意外的响应:(400)错误 请求。
我尝试通过WCF从Windows手机应用程序保存图像,我知道我需要将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手机应用程序中只有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文件???如果是这种情况我该如何更新呢?
答案 0 :(得分:0)
您必须确认这确实是问题所在。首先,打开服务器上的WCF跟踪(http://blogs.msdn.com/b/madhuponduru/archive/2006/05/18/601458.aspx),看看有什么错误。
答案 1 :(得分:0)
乍一看似乎一切正常 - 除非我有预感,否则您的服务配置可能因为您的服务名称是奇数而被取消....
你有:
<service name="Service1" >
您的服务类 - 实现服务合同的服务类 - 实际上只调用Service1
并且不存在于任何名称空间内吗?
name=
节点上<service>
属性的值必须与服务类类型的完全限定名称完全相同 - 所以最有可能的是,它会是这样的:
<service name="MyNamespace.Service1" >
或 .NET命名空间您的Service1
类所在的
如果该名称不匹配,那么WCF运行时将不使用该服务配置并回退到WCF默认值,这可以解释为什么它适用于较小的文件 - 但是对于较大的文件则失败的。