我对网络服务很陌生,我试图配置我的WCF服务,使用Visual WCF服务模板从其他服务中提取文件。
我设法拉除了内容数据以外的所有内容。我已经搜索过,发现我必须使用Mtom而不是Text来进行消息编码。问题是我不确定如何配置我的Web服务以使用MessageEncoding = Mtom。我已经摆弄了web.config文件,但我似乎无法正确配置它。
这是我的服务界面
[ServiceContract]
public interface IService
{
[OperationContract]
string test(changeData data);
[OperationContract]
RetrieveChangeListResponse GetChangeList();
[OperationContract]
RetrieveChangeTaskListResponse GetTaskList();
[OperationContract]
RetrieveInteractionAttachmentResponse GetFile(string id);
// TODO: Add your service operations here
}
这是我的web.config
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicHttp" allowCookies="true"
maxReceivedMessageSize="20000000"
maxBufferSize="20000000"
maxBufferPoolSize="20000000"
messageEncoding ="Mtom">
<readerQuotas maxDepth="32"
maxArrayLength="200000000"
maxStringContentLength="200000000"/>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="IService"
behaviorConfiguration="ServiceWithMetadata">
<endpoint name="BasicHttpBinding_IService"
binding="basicHttpBinding"
bindingConfiguration="basicHttp"
contract="IService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceWithMetadata">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
目前,如果使用此设置,我会收到此错误:
错误:无法从localhost获取元数据:50282 / Service.svc如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅URI上的MSDN文档:localhost:50282 / Service.svc元数据包含无法解析的引用:&#39; localhost:50282 / Service.svc&#39;。内容类型application / soap + xml;服务localhost:50282 / Service.svc不支持charset = utf-8。客户端和服务绑定可能不匹配。远程服务器返回错误:(415)无法处理消息,因为内容类型&#39; application / soap + xml;字符集= UTF-8&#39;不是预期的类型&text; / xml; charset = utf-8&#39; .. HTTP GET错误URI:localhost:50282 / Service.svc HTML文档不包含Web服务发现信息。
如果删除这些设置,我会遇到如下类型不匹配:
客户发现&#39; multipart / related的响应内容类型;类型=&#34;文本/ XML&#34 ;; boundary =&#34; ---- = _ Part_0_30957184.1421681490926&#34;&#39;,但预期&#39; text / xml&#39;。
我知道有一个WcfTestClient的配置和实际服务的配置,但我不明白如何正确配置我的服务器端以正确接受Mtom编码。
有人可以解释如何正确配置服务器端绑定吗?我使用 BasicHttpBinding ,但也希望将 wshHttpBinding 用于soap 1.2功能。
提前致谢。
答案 0 :(得分:0)
问题在于使用的身份验证方法,我使用的是匿名而不是基本的。 此外,您不能拥有作为代理数据类型的方法返回类型。如果你有这样的方法,你会得到关于类派生的错误。