我正在编写一个.Net web服务,它将替换旧的web服务。为了不破坏现有的客户端,我不能改变接口。这意味着没有WSE可以访问此web服务。
“旧的”web服务直接访问数据库。
“新”不直接访问数据库,它使用另一个web服务来访问数据库。另一个web服务已经被其他一些应用程序使用。
因此,基本上,我是在编写一个(公共) web服务,而不是另一个(私有) web服务。
让我们调用新的公共web服务"Front",以及现有的私有web服务"Back“。
问题是"Back“需要WSE2身份验证,而"Front”需要在没有WSE2的情况下才能访问。
如何在web.config中配置它?我有像这样的microsoft.web.services2部分和soapExtensionTypes部分:
<microsoft.web.services2>
<diagnostics>
<trace enabled="true" input="InputTrace.log" output="OutputTrace.log" />
</diagnostics>
<policy>
<cache name="policyCache.config" />
</policy>
<webServices>
<soapExtensionTypes>
<add type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2, Version=2.0.0.0, [.....] />
</soapExtensionTypes>
</webServices>我需要那些符合“后退”,但然后客户端调用“前”也需要符合WSE2,这是我不想要的。
有什么帮助吗?
发布于 2011-06-23 23:26:44
最后我自己找到了答案,它在策略文件中。我必须为不同的策略定义不同的端点。大概是这样的:
<?xml version="1.0" encoding="utf-8"?>
<policyDocument xmlns="http://schemas.microsoft.com/wse/2003/06/Policy">
<mappings xmlns:wse="http://schemas.microsoft.com/wse/2003/06/Policy">
<!-- calls to this web services will use wse -->
<endpoint uri="http://the.service.that.needs.wse2.asmx">
<defaultOperation>
<request policy="#Sign-Username" />
<response policy="" />
<fault policy="" />
</defaultOperation>
</endpoint>
<!-- no policies for other endpoints -->
<defaultEndpoint>
<defaultOperation>
</defaultOperation>
</defaultEndpoint>
</mappings>
<policies [...]>
[...]
</policies>
</policyDocument>现在我想了解如何动态配置端点uri,但这可能是另一个问题。
https://stackoverflow.com/questions/6455750
复制相似问题