ASP.NET创建XML Web服务全接触(15)
用ASP.NET创建的XML Web服务的配置选择
XML Web服务的配置遵循和所有的ASP.NET Web应用程序使用的相同的范式。ASP.NET配置是一个基于XML的文本文件配置结构,既强大又可扩展。配置文件只是一组XML元素,描述用于Microsoft.NET Framework的特定技术特性的配置选择。就 XML Web服务而言,配置选择是封装在配置文件的webServices XML元素中的。
配置消息传送协议和服务帮助页面
用于XML Web服务消息传送协议和服务帮助页面在配置文件的<webServices>元素下的<protocols> XML元素中配置。通过添加<add>和<remove>元素来进行配置,制定配置文件范围内的那个设置有效。<add>元素明确地添加对配置文件范围内的设置的支持,而<remove>元素移除对更高的配置等级的支持。例如,可以使用Machine.config文件中的<add>元素在机器级别添加一个协议设置,然后使用Web.config文件中的<remove>元素移除对某个Web应用程序的设置。下面的是<add>和<remove>元素的语法:
<{add|remove} name=\"protocol name\" /> |
<add>和<remove>元素的name属性有下列选项:
设置 | 描述 |
HttpSoap | 支持用于XML Web服务的SOAP协议的控件。默认情况下安装已经添加了这个支持。 |
HttpGet | 支持用于XML Web服务的HTTP - GET协议的控件。默认情况下安装不添加这个支持。 |
HttpPost | 支持用于XML Web服务的HTTP - POST协议的控件,不管请求从何起源。默认情况下安装不添加这个支持。 |
HttpPostLocalhost | 当请求来源于本地计算机的时候,支持用于XML Web服务的HTTP - POST协议的控件。如果HttpPost添加到当前配置中,那么这个设置就无效了。默认情况下安装已经添加了这个支持。 |
Documentation | 指定一个服务帮助页面是否显示。默认情况下安装已经添加了这个支持。 |
注意:.NET Framework 1.0版支持HttpSoap、HttpGet、HttpPost和Documentation设置和所有默认的机器级别能够使用的设置。
安全建议
在使用用于XML Web服务的HTTP-GET或HTTP-POST协议之前,你应该知道这样做可能把它暴露给无意的调用。例如,一个未料想到的用户可能接收一个带有XML Web服务链接的电子邮件,点击链接,使用电子邮件中提供的参数调用XML Web服务。你应该在使用HTTP-GET或HTTP-POST协议之前,你应该考虑这种无意中的调用是否有害。
使HTTP-GET和HTTP-POST协议对于整机失效
使用你习惯的文本编辑程序打开Machine.config文件。(Machine.config文件默认的地点在安装目录的/Config子目录下。)
如果webServices部分中有对HTTP-GET和HTTP-POST的支持,那么就把这几行注释掉。在这样做以后,webServices部分应该如下:
<webServices> |
保存Machine.config。
在下一次请求这台机器上的XML Web服务的时候,配置的改变将生效。
使用于单独Web应用程序的协议支持失效
使用你习惯的编辑程序打开Web应用程序根目录下的Web.config。(如果无存在Web.config文件,那么就新建一个。)
修改Web.config的webServices部分,明确的移除协议设置。下面的示例明确地移除HTTP- POST和HTTP- GET协议:
<webServices> |
保存Web.config。
在下一次请求这个Web应用程序的XML Web服务的时候,配置的改变将生效。
服务帮助页面
在一个Web浏览器中不使用任何参数导航到XML Web服务的URL能让客户查看这个XML Web服务的服务帮助页面,如果这个服务进行了这样的配置。服务帮助页面默认情况下包含关于与XML Web服务通讯的方法以及XML Web服务方法的基本信息。因为服务帮助页面仅仅是一个ASP.NET Web表单,它可以被替换或者被修改成包含类似于公司标识这样的条目。服务帮助页面的文件名在配置文件的<wsdlHelpGenerator>XML元素中指定。服务帮助页面只用来显示有在<protocols> XML元素指定的Documentation协议的配置文件范围内的XML Web服务。默认情况下,Documentation在Machine.config文件中指定。
使服务帮助页面对于一个单独的Web应用程序失效。
使用你习惯的编辑程序打开Web应用程序根目录下的Web.config。(如果无存在Web.config文件,那么就新建一个。)
修改Web.config的webServices部分,明确的移除Documentation协议。
<webServices> |
保存Web.config。
在下一次请求这个Web应用程序的XML Web服务的时候,配置的改变将生效。
注意取消Documentation协议还禁止任何Web应用程序内用于XML Web服务的WSDL文件生成。这防止客户端产生代理类,除非创建一个自定义WSDL文件来为为它们设置。为了在Web应用程序中保留用于XML Web服务的WSDL文件生成,而不提供任何关于XML Web服务的可读的信息,那么你可以添加一个<wsdlHelpGenerator>元素到Web应用程序的Web.config文件中,设置href属性为你创建的一个空白的HTML页面。下面的代码示例是一个Web.config文件的摘录,设置服务帮助页面为MyBlank.htm文件。
<webServices> |