【问题标题】:How to rewrite a form action on the "Help Page" of an ASP.NET web service如何在 ASP.NET Web 服务的“帮助页面”上重写表单操作
【发布时间】: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,这是默认的。您可以使用 &lt;wsdlHelpGenerator&gt; 元素对其进行自定义。

标签: asp.net web-services iis iirf proxypass


【解决方案1】:

如果您需要更改帮助页面,请使用 web.config 中的 &lt;wsdlHelpGenerator&gt; 元素。

您可以在 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\DefaultWsdlHelpGenerator.as‌​px 找到默认帮助页面。

请注意,这只会在通过帮助页面测试服务时帮助您。它与客户端如何访问服务无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 2015-04-21
    相关资源
    最近更新 更多