【发布时间】:2011-09-26 15:09:14
【问题描述】:
对于普通的 .aspx 页面,我可以将 Form.browser 文件放入 App_Browsers 目录,如下所示。
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
adapterType="MyProject.FormRewriterControlAdapter" />
</controlAdapters>
</browser>
</browsers>
在那个类中,我可以重写表单的 action 属性。但是,在 Web 服务帮助页面的情况下,不考虑此文件,并且使用默认操作(使用绝对 URL)编写表单。
这不允许我使用反向代理 (Ionic's ISAPI Rewrite Filter - IIRF) 访问我的网络服务。
我怎样才能做到这一点并正确地重写帮助页面上的表单操作?
【问题讨论】:
-
Web 服务不使用 HTML,因此它们没有表单,因此它们没有表单操作。你想完成什么?
-
我只是想让网络服务在反向代理上的网站上工作。在页面中编写的用于实时测试 Web 服务的表单操作(即在页面 MyWebService.asmx?op=MyMethod 中)没有正确编写操作,因此表单无法正常工作。我希望能够像我网站中的所有其他形式一样重写该操作。
-
您应该忽略该页面。这并不重要。事实上,您真的应该完全忽略 ASMX Web 服务。微软认为它们是一种遗留技术。您应该改用 WCF。顺便说一句,有趣的 hack 使用控制适配器重写表单。我不认为这就是控制适配器的用途。
-
WebForms ASP.NET 编程必须充满技巧,如果您不希望在大型项目中使用该技术。
-
查看 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\DefaultWsdlHelpGenerator.aspx,这是默认的。您可以使用
<wsdlHelpGenerator>元素对其进行自定义。
标签: asp.net web-services iis iirf proxypass