如何配置 IIS,使我在同一台机器上运行的 ASP.NET Web 应用程序可以互相 POST,但公众不能 POST?
Posted
技术标签:
【中文标题】如何配置 IIS,使我在同一台机器上运行的 ASP.NET Web 应用程序可以互相 POST,但公众不能 POST?【英文标题】:How can I configure IIS so that my ASP.NET web applications running on the same machine can POST to each other, but the public cannot POST? 【发布时间】:2012-02-04 01:06:05 【问题描述】:更具体地说,我正在编写一个 Web 请求处理程序,该处理程序将请求分叉到 独立、不同 ASP.NET Web 应用程序的不同处理页面。具体来说,此处理程序的目的是处理 Paypal 的即时付款通知。
我想知道如何将这些自定义处理页面仅公开给本地主机,以便我的分叉处理程序的 POST 将通过,但远程机器无法直接发布到这些页面。
【问题讨论】:
【参考方案1】:可以将 IIS 配置为仅允许某些 IP 地址访问站点。这些设置可以在站点的目录安全选项卡 (IIS6) 或 IP 地址和域限制选项 (IIS7) 中找到。您可以将此限制为本地请求,仅指定唯一允许的地址为 127.0.0.1
【讨论】:
这仅在站点级别可用还是在单个页面级别也可用? IIS 仅在站点/应用程序级别处理此问题 - 如果您想要比这更精细,您需要构建到您的 asp.net 应用程序中,检查 Request.IsLocal 属性【参考方案2】:在 IIS 管理器中,在您只想允许本地访问的站点的绑定操作面板中,将 IP 地址更改为 127.0.0.1。
对于多个应用程序,在您的 Windows 主机文件 (system32\drivers\etc\hosts) 中为 127.0.0.1 设置多个别名。返回“绑定”操作面板,将每个站点的主机名设置为其中一个别名,并在来自其他站点的 GET 或 POST 中使用该别名,例如 httpx://mylocalsite/default.aspx。
如果您不能隔离整个站点,那么您可以编写一个HttpModule
,并在BeginRequest
事件中,如果Request.IsLocal
对于您关注的页面不正确,则抛出一个错误。
【讨论】:
【参考方案3】:好吧,我不知道如何在 IIS 中进行操作,但您的页面可以检查
Request.IsLocal
【讨论】:
以上是关于如何配置 IIS,使我在同一台机器上运行的 ASP.NET Web 应用程序可以互相 POST,但公众不能 POST?的主要内容,如果未能解决你的问题,请参考以下文章
同一台机器上的 SQL Server Express,还是外部共享的 SQL Server Standard? (对于 ASP.NET 站点)