http处理程序不在Web服务器上工作但在localhost上工作

时间:2010-03-16 06:02:46

标签: asp.net httphandler

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

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

我在&lt; httpHandlers&gt;

中写了这个

它在localhost上运行良好,但在服务器上运行良好...没有任何犹豫的服务器显示xml文件...我不知道如何继续......

提前感谢.. :))

更新:服务器有IIS6,Windows Server 2003

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

您应该检查服务器上哪些其他处理程序处于活动状态,并且可以影响 .xml 文件,包括 <add verb="*" path="*" ... <等通用文件/ p>

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

  

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

更新: Protecting Files with ASP.NET

答案 2 :(得分:1)

IIS 6&amp; Web Server中内置的Visual Studio注册的内容与IIS 7略有不同。如果主机运行的是IIS 7,则可能需要将注册添加到Web.config文件中的<system.WebServer>节点。

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

答案 3 :(得分:0)

使用<location>代码怎么样?

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

答案 4 :(得分:0)

我也面临类似的问题。在我的localhost中,crud操作正常工作并在网格上显示数据,但同样不能在虚拟机中使用托管URL表现得很怪异, 原因: 我一个接一个地调用处理程序,在保存回调后我再次调用一个处理程序来在这两个调用中显示网格中的数据保存正常但显示处理程序不仅仅在fiddler中。 索尔: 所以我试图在保存到显示的回调中以序列化格式发送数据,这解决了我的问题,它只是一个快速修复,不知道为什么它无法正常工作。

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