在WCF上的Web浏览器中隐藏wsdl的xml信息?

时间:2017-11-13 12:32:09

标签: xml wcf service wsdl asmx

有没有办法让客户端使用wsdl,但只隐藏其xml,它在Web浏览器中打开时显示方法。

例如,以下内容适用于asmx:

  <system.web>
    <webServices>
      <wsdlHelpGenerator href="Blank.aspx"/>
    </webServices>
  </system.web>

对于svc有什么替代方案吗?

删除serviceMetadata或将httpGetEnabled更改为false会使wsdl无法使用,这不是我想要的。我只是想在网络浏览器中打开它的内容时不可见。

2 个答案:

答案 0 :(得分:0)

如果您想要将用户重定向到其他地址,如果他/她请求您的svc文件,您可以使用rewrite,如:

<system.webServer> 
         <rewrite>
             <rules>
                <clear />
                  <rule name="Redirect to Blank" stopProcessing="true">
               <match url="^(.+wsdl.+)/?$" /> 
                <action type="Redirect" url="http://yourDomain/Blank.aspx" redirectType="Permanent" appendQueryString="false" />
            </rule>
            </rules>
        </rewrite>
  </system.webServer>

如果yourDomain/Blank.aspx请求,则应将用户重定向到wsdl 但应该有另一种方法,但我已经在我的系统上进行了测试,它运行良好。

只需在服务的配置文件(服务器端)中添加此配置。

<强>更新

您还可以使用<match url="\b(wsdl|singleWsdl|svc)\b" />重定向包含svcwsdlsingleWsdl的网址。

答案 1 :(得分:0)

这是正确的方向,但是特定的正则表达式和动作并不完全符合我的要求

1)http:// {domain} / {service} .svc - &gt; https:// {domain} /blank.aspx(好)

2)http:// {domain} / {service} .svc?wsdl - &gt; (当我按F12时显示错误,因为它无法找到blank.html页面)

3)http:// {domain} / {service} .svc?singleWsdl - &gt; (不改变)

4)https:// {domain} / {service} .svc - &gt; (不改变)

5)https:// {domain} / {service} .svc?wsdl - &gt; (不改变)

6)https:// {domain} / {service} .svc?singleWsdl - &gt; (不改变)