【问题标题】:http handlers not working on web server but works on localhosthttp 处理程序不在 Web 服务器上工作,但在 localhost 上工作
【发布时间】:2010-03-16 06:02:46
【问题描述】:

我的asp.net Web 应用程序中有几个xml 文件,除了我的服务器端代码之外,我不希望任何人访问它们。这是我尝试过的..

<add verb="*" path="*.xml" type="System.Web.HttpForbiddenHandler" />

我在

里面写了这个

它在本地主机上运行良好,但在服务器上却不行...服务器毫不犹豫地显示 xml 文件...我不知道如何继续...

提前谢谢..:)

更新:服务器有IIS6,windows server 2003

【问题讨论】:

    标签: asp.net httphandler


    【解决方案1】:

    您应该检查服务器上还有哪些其他处理程序处于活动状态并且可以影响 .xml 文件,包括像 &lt;add verb="*" path="*" ...

    这样的通用处理程序

    另外,请检查此处指出的服务器配置:httpHandlers Element (ASP.NET Settings Schema)

    Microsoft Internet 信息服务 (IIS) 有自己的模型,用于将扩展映射到 ISAPI。要使给定应用程序扩展及其处理程序之间的映射生效,扩展必须在 IIS 中映射到 ASP.NET ISAPI。对于非标准扩展,例如自定义扩展,您必须相应地配置 IIS。

    更新: Protecting Files with ASP.NET

    【讨论】:

    • 我检查得很好,没有与我的特定处理程序发生冲突
    • @ZX12R:你真的检查过xml文件映射到服务器上的ASP.NET ISAPI扩展吗?
    • 你能告诉我如何彻底检查映射吗?
    • 哇..我住在共享服务器空间..!我无法访问 IIS..:(
    • @ZX12R:那就和管理员谈谈吧,他们应该会帮助你的
    【解决方案2】:

    您可以将它们放在特殊的App_Data 目录中。不提供此文件夹内的文件。

    【讨论】:

    • 我认为这不是完美的解决方案。它会起作用,但只是一种解决方法。
    • 这个答案+1;这不是一种解决方法,它是 App_Data 的完美用法
    【解决方案3】:

    IIS 6 和内置 Web 服务器的 Visual Studio 注册的东西与 IIS 7 略有不同。如果您的主机运行 IIS 7,您可能需要将注册添加到 Web.config 文件中的 &lt;system.WebServer&gt; 节点。

    <system.webServer>
      <handlers>
        <add ... />
      </handlers>
    </system.webServer>
    

    【讨论】:

    • 如果是这样,@alexandrul 的回答可能是正确的。 IIS 直接处理所有文档请求,除非映射到另一个处理程序。许多托管服务提供商提供了一个控制面板,您可以在其中将文件扩展名映射到特定的处理程序。
    【解决方案4】:

    使用&lt;location&gt;标签怎么样?

    <configuration>
       <location path="something.xml">
          <system.web>
             <authorization>
                <deny users="*"/>
             </authorization>
          </system.web>
       </location>
    </configuration>
    

    【讨论】:

    • 我不认为我完全理解。 标签应该放在配置根目录中吗?我认为每个配置文件只允许一个 元素。请耐心等待并解释..
    • 是的,事实上,我建议使用您的 web.config 中提到的位置标记并指出 XML 的路径。然后在您的身份验证标签中,指定拒绝用户 = *。我还没有检查它,但我希望它应该可以工作
    • 您能把您的应用程序主机配置文件发给我吗?
    【解决方案5】:

    我也遇到了类似的问题。在我的本地主机中,crud 操作工作正常,并在网格上显示数据,但同样不能在虚拟机中的托管 url 上工作,行为怪异, 原因: 我一个接一个地调用处理程序,就像在保存回调后我再次调用另一个处理程序以在这两个调用中显示网格中的数据保存正常发生但显示处理程序不仅在提琴手中命中。 溶胶: 所以我尝试在保存到显示的回调中以序列化格式发送数据,这解决了我的问题它只是一个快速修复不知道为什么它不工作。

    我觉得理想情况下对处理程序的多次调用应该可以工作,但是如果您一个接一个地调用多个处理程序,则可能会发生另一个问题,而不是尝试仅在一次调用中获取数据,它可能会帮助您解决问题.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多