Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅为特定文件/文件夹注册http处理程序或以编程方式注册http处理程序_C#_Asp.net_Web Config_Httphandler - Fatal编程技术网

C# 仅为特定文件/文件夹注册http处理程序或以编程方式注册http处理程序

C# 仅为特定文件/文件夹注册http处理程序或以编程方式注册http处理程序,c#,asp.net,web-config,httphandler,C#,Asp.net,Web Config,Httphandler,好的,我在一家老公司的网站上工作。我们这里讲的是经典的ASP。我让它在开发服务器上工作,但当它进入生产服务器时,服务器上的其他东西(如web服务)开始崩溃 所以基本上我添加了一个使用报表查看器控件的aspx页面。当我在web配置文件中添加http处理程序时,问题就出现了。由于网站的架构非常混乱,我必须修改根web配置文件,这会导致问题,因为子目录继承自根web配置文件 这是我得到的错误 以下是我尝试过的一些我认为有效的方法 首先,我认为在web配置文件中添加一个location元素是可行的,但是

好的,我在一家老公司的网站上工作。我们这里讲的是经典的ASP。我让它在开发服务器上工作,但当它进入生产服务器时,服务器上的其他东西(如web服务)开始崩溃

所以基本上我添加了一个使用报表查看器控件的aspx页面。当我在web配置文件中添加http处理程序时,问题就出现了。由于网站的架构非常混乱,我必须修改根web配置文件,这会导致问题,因为子目录继承自根web配置文件

这是我得到的错误

以下是我尝试过的一些我认为有效的方法

首先,我认为在web配置文件中添加一个location元素是可行的,但是不可能(当然),它没有注册http处理程序。这是一个错误


接下来,我想我会将aspx文件移动到一个子目录中,并为它提供自己的web配置文件,在那里注册http处理程序,但这也不起作用


有一件事我确实尝试过,但我不确定它是否会导致所有子文件夹继承该属性

正在将位置路径设置为“”



我的问题是。。。是否有方法以编程方式注册此http处理程序。或者,您可能发现我的web配置设置有问题。

如果您的解决方案有效,则会对存在于web根目录中或其下的
保留.ReportViewerWebControl.axd
的所有请求调用处理程序。如果要将处理程序隔离为只能从根目录访问,请在路径开始处使用/将条目添加到web.config:


如果要隔离单个子目录中的所有内容,请按如下所示将条目添加到web.config:


使用指定为的路径注册处理程序:

path=“Reserved.ReportViewerWebControl.axd”
将导致对
Reserved.ReportViewerWebControl.axd
的任何请求调用处理程序,而不考虑所使用的子目录

编辑
在IIS6下,如果希望
Reserved.ReportViewerWebControl.axd
仅从根目录可用,只需添加对处理程序的引用,如下所示。您只需在path元素的开头添加/即可


如果采用此方法时出现
无法加载类型“Microsoft.Reporting.WebForms.HttpHandler”的
错误,请尝试将以下内容添加到
web.config
中的compilation\assemblies(您可能还必须将该程序集添加到GAC):


...
...

您的解决方案能够正常工作,将导致对web根目录中或其下存在的
Reserved.ReportViewerWebControl.axd
的所有请求调用处理程序。如果要将处理程序隔离为只能从根目录访问,请在路径开始处使用/将条目添加到web.config:


如果要隔离单个子目录中的所有内容,请按如下所示将条目添加到web.config:


使用指定为的路径注册处理程序:

path=“Reserved.ReportViewerWebControl.axd”
将导致对
Reserved.ReportViewerWebControl.axd
的任何请求调用处理程序,而不考虑所使用的子目录

编辑
在IIS6下,如果希望
Reserved.ReportViewerWebControl.axd
仅从根目录可用,只需添加对处理程序的引用,如下所示。您只需在path元素的开头添加/即可


如果采用此方法时出现
无法加载类型“Microsoft.Reporting.WebForms.HttpHandler”的
错误,请尝试将以下内容添加到
web.config
中的compilation\assemblies(您可能还必须将该程序集添加到GAC):


...
...

请注意:我发现
无法仅在我们的生产环境中加载类型“Microsoft.Reporting.WebForms.HttpHandler”
。我将程序集添加到
下的
assemblies
部分,但仍然不起作用。然后根据这个答案,我检查了机器上的全局程序集缓存(GAC)。该计算机上的Microsoft.ReportViewer.WebForms版本是9.0.0.0,而不是8.0.0.0。我在
web.config
中更新了这一行,它工作得很好。谢谢

请注意:我发现
无法仅在我们的生产环境中加载类型“Microsoft.Reporting.WebForms.HttpHandler”
。我将程序集添加到
下的
assemblies
部分,但仍然不起作用。然后根据这个答案,我检查了机器上的全局程序集缓存(GAC)。该计算机上的Microsoft.ReportViewer.WebForms版本是9.0.0.0,而不是8.0.0.0。我在
web.config
中更新了这一行,它工作得很好。谢谢

我会投票支持你的努力,但遗憾的是,这不起作用,我真的希望它会起作用。@Odnxe你能更详细地说明什么不起作用吗?你试过哪种方法?另外,您使用的IIS版本是什么?我使用IIS 7.5/ASP.NET 4.0/Classic managed pipeline进行了测试,它似乎按照我在答案中描述的方式工作。它是IIS v6和ASP.NET 2.0。我尝试了这两种方法(我在根目录中有aspx页面(与生产时一样)和子目录中有aspx页面(仅用于测试)。@Odnxe请查看我答案的更新