我使用SOAP端点配置了传统的WCF服务。在我的客户端项目中,我添加了服务引用等。这些正在按预期工作。
我创建了一个启用JSONP的WCF服务,对.svc文件,web配置等进行了修改。我创建了一个测试客户端页面进行测试。我成功调用了JSONP服务。
但是,我对Web配置所做的更改破坏了SOAP服务的服务引用。我想使用两种类型的终点。我不知道如何配置服务和Web配置。
如果只获取http,那么每个操作(无论是用于SOAP还是JSONP)都可以用以下内容进行修饰:[WebGet(ResponseFormat = WebMessageFormat.Json)]
然后我的服务类需要:[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
当我现在尝试在我的客户端项目中更新我的服务引用时,我正在
绑定实例已与侦听URI“http:// flixsit:1000 / FlixsitWebServices.svc”相关联。如果两个端点想要共享相同的ListenUri,则它们还必须共享相同的绑定对象实例。两个冲突的端点在AddServiceEndpoint()调用,配置文件或AddServiceEndpoint()和config的组合中指定。
将SOAP配置添加到我的webconfig也会破坏JSONP端点。在客户端调用JSONP不需要客户端服务引用(或代理生成),但SOAP确实如此?
我的服务WebConfig:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="DefaultBehaviors">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
<basicHttpBinding>
<binding name="BasicHttpEndpointBinding" />
</basicHttpBinding>
</bindings>
<services>
<service name="Flixsit.Services.FlixsitWebServices" behaviorConfiguration="DefaultBehaviors">
<endpoint name="JSONPEndPoint" address=""
binding="webHttpBinding"
bindingConfiguration="webHttpBindingWithJsonP"
contract="Flixsit.Services.IFlixsitWebServices"
behaviorConfiguration="webHttpBehavior" />
<endpoint name="HttpEndPoint" address=""
binding="basicHttpBinding"
contract="Flixsit.Services.IFlixsitWebServices" />
<host>
<baseAddresses>
<add baseAddress="http://Flixsit:1000/FlixsitWebServices.svc" />
</baseAddresses>
</host>
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
答案 0 :(得分:0)
错误清楚地描述了问题。您有两个具有相同地址但绑定不同的endpoits。这个不允许。使用绑定webHttpBinding在端点中设置address =“jsonp”。您将在/ 服务 .svc / jsonp
上调用端点