The Report Viewer Web Control HTTP Handler has not been registered in the application's
web.config file. Add <add verb="*" path="Reserved.ReportViewerWebControl.axd" type =
"Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> to the system.web/httpHandlers section of the web.config file
Run Code Online (Sandbox Code Playgroud)
这个错误即将到来.我已经在http处理程序中提到了这一行但仍然出现此错误
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=0000000000000000" validate="false" />
Run Code Online (Sandbox Code Playgroud)
我的html页面标记如下
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Button ID="btnsubmit" runat="server" OnClick="GenerateReportButton_Click" />
<rsweb:ReportViewer ID="ReportViewer1" runat="server">
</rsweb:ReportViewer>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
Web配置程序集部分如下:
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, …Run Code Online (Sandbox Code Playgroud) 我正在ASP.NET MVC中实现一个自定义控制器,并且真的希望能够在url中使用冒号,这样我就可以识别类/列名称及其值,如下所示:
http://example.com/user:chaiguy
...但显然ASP.NET或IIS不允许在网址中使用冒号.我做了一些挖掘,显然它被认为是一个安全问题,但是,我正在使用MVC并且手动处理所有 url路径(只是将它们视为字符串),而不是将它们与文件系统相关联,所以我很确定这个不适用.
我也听过一些关于实现自定义Http处理程序的讨论.
任何想法或想法将不胜感激.
呃....为什么?说真的,为什么打破标准? - 兰道夫
...
那么,我建议您调查构建Web服务.WCF是一个不错的技术,它在IIS中运行良好.
我碰巧喜欢网址,而WCF对我来说太复杂了.我希望它与url兼容,如REST,但不仅能够导航层次结构,还能做好布局的事情.我用/ users/chaiguy的问题是它解释了没有的层次结构:在我的系统中"user"是一个类,它不是一个文件夹.user:chaiguy表示具有值为"chaiguy"的用户类的实例,并且该单个实体具有子实体的潜力.例如:
/user:chaiguy/name
...我想显示该实体的名称.如果我使用您的方法执行此操作,它将如下所示:
/users/chaiguy/name
问题是你怎么知道什么是班级,有什么价值?它可以解释为
/users/chaiguy:name
在我的系统中,这没有意义.看看我的目标是什么?为了给出稍微复杂的示例,假设我们想要从多个实例中选择用户实体的子代.因此用户可能有多个电子邮件地址.要选择一个,我们可能会使用:
/user:chaiguy/email:me@here.com/
所以它实际上是递归的.它不是一个文件路径,它更像是一个XPath(或者类似于基于我所知甚少的jQuery).也就是说,它更像是动态评估的查询选择而不是硬连线文件路径.它在服务器上进行评估.
别搞错了,我不是在这里建立一个典型的网站甚至是网络服务.
我有一个用Cassini开发和测试的mvc应用程序.在GoDaddy上部署到我的网站,默认页面就可以了.点击登录,我得到404.
我在IIS 7下运行,所以这是出乎意料的.我的路线很简单:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Public", action = "Index", id = "" }
);
routes.MapRoute(
"Report1",
"Report/{action}/{start}/{end}",
new { controller = "Report", action = "Index" }
);
routes.MapRoute(
"Report2",
"Report/{action}/{start}/{end}/{idList}",
new { controller = "Report", action = "Index" }
);
Run Code Online (Sandbox Code Playgroud)
知道可能会发生什么或我如何解决这个问题?
如果我认为可能,我如何修改我的web.config以使子目录静态 - 内部文件只会作为静态文件处理,即使它的名称是"aspx"或其他什么?谢谢.
在ASP.NET网站上执行方法的最快方法是什么?
场景非常简单:我有一个方法,应该在网页被击中时执行.页面上没有其他任何事情发生,唯一呈现的输出是"完成"消息.我希望处理尽可能快.
每一次点击都是唯一的,因此缓存不是一种选择.
我的计划是使用HttpHandler并在web.config(mypage.ashx)中配置它,而不是常规的.aspx页面.这应该会显着减少开销.
所以我的问题是:有没有比使用HttpHandlers更快的方法来实现这一目标?
我在visual studio中的HttpHandler中设置了一个断点.HttpHandler是我试图通过在VS开发Web服务器中运行我的应用程序来调试的.ashx文件.我的断点没有被击中.
我该如何逐步完成?
编辑:我的断点没有被击中
我正在使用Visual Studio 2010开发一个针对.NET Framework 4.0的ASP.NET MVC 2网站.
我的web.config包含以下代码:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="XhtmlModule" type="DomenicDenicola.Website.XhtmlModule" />
</modules>
<handlers>
<add name="DotLess" type="dotless.Core.LessCssHttpHandler,dotless.Core" path="*.less" verb="*" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
当我Build > Publish用来将网站放在我的本地IIS7实例上时,它的效果很好.
但是,当我使用时Debug > Start Debugging,HTTP处理程序和模块都不会在任何请求上执行.
奇怪的是,当我把处理器和模块<add />标签放回<system.web />下<httpHandlers />和<httpModules />,他们的工作.这似乎意味着开发Web服务器以经典模式运行.
我该如何解决?
我正在比较在IIS 7下运行的NancyFx和ServiceStack.NET的性能(在Windows 7主机上进行测试).两者都非常快 - 在本地测试每个框架进程超过10,000 req/sec,ServiceStack的速度提高了约20%.
我遇到的问题是ASP.NET似乎正在缓存来自HttpHandler的每个唯一URI请求的响应,很快导致大量内存压力(3 GB以上)和垃圾收集器过度工作(大约25%的时间消耗GC).到目前为止,我一直无法禁用对象的缓存和构建,并且正在寻找有关如何禁用此行为的建议.
请求循环基本如下:
for i = 1..100000:
string uri = http://localhost/users/{i}
Http.Get(uri)
Run Code Online (Sandbox Code Playgroud)
响应是一个简单的JSON对象,格式为{UserID:n}.
我已经破解了打开的WinDBG,并且每个请求都有:
System.Web.FileChangeEventHandlerSystem.Web.Configuration.MapPathCacheInfosSystem.Web.CachedPathDatasSystem.Web.Caching.CacheDependencysSystem.Web.Caching.CacheEntrys显然,这些缓存项目让我相信它是一个缓存膨胀问题(我很想摆脱150,000个无法使用的对象!).
在web.config中
<system.web>
<caching>
<outputCache enableOutputCache="false" enableFragmentCache="false"/>
</caching>
</system.web>
Run Code Online (Sandbox Code Playgroud)同样在web.config中(以及策略的许多变体,包括无).
<caching enabled="false" enableKernelCache="false">
<profiles>
<add policy="DontCache" kernelCachePolicy="DontCache" extension="*/>
</profiles>
</caching>
Run Code Online (Sandbox Code Playgroud)查看框架的源代码,看看是否可能存在使用ASP.NET缓存的任何"功能".虽然有缓存帮助程序,但它们对框架本身是私有的,并且似乎不利用ASP.NET缓存.
通过反射器挖掘我发现将值设置UrlMetadataSlidingExpiration为零消除了过多内存使用的大部分,代价是将吞吐量减少50%(FileAuthorizationModule类缓存FileSecurityDescriptors,生成时必须有些昂贵,UrlMetadataSlidingExpiration是非零).
这是通过更新web.config并将以下内容放入:
<hostingEnvironment urlMetadataSlidingExpiration="00:00:00"/>
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我将尝试完全禁用FileAuthorizationModule运行,看看是否有帮助.但是,ASP.NET仍然会生成2*N MapPathCacheInfo和CacheEntry对象,因此内存仍在消耗,速度要慢得多.
另一半问题与此处描述的问题相同:阻止许多不同的MVC URL填充ASP.NET缓存.设置
<cache percentagePhysicalMemoryUsedLimit="1" …
我在面试中被问到如何实施HTTP module和HTTP handler进行的问题ASP.Net MVC.我知道它们在ASP.Net中用于在调用aspx页面之前编写预处理逻辑.但是在ASP.Net MVC中我们有过滤器,所以我告诉他们我们使用过滤器.我给出了正确的答案吗?
我一直在谷歌搜索和修补几个小时并没有取得太大进展,所以希望这里有人可以提供帮助.
我正在尝试将所有请求转到某个路径以由第三方组件处理.
编辑我需要所有其他路径的所有请求才能正常运行.
我正在使用带有通配符映射的路由处理程序,如下所示:
routes.Add(new Route("pathiwant/{*EverythingElse}", new MyRouteHandler()));
Run Code Online (Sandbox Code Playgroud)
所有传统路由都正确地转发到处理程序,处理程序很好地转发到第三方组件.当我点击静态文件(.html,.txt等)时,它们会被StaticFile处理程序而不是我的处理程序拾取,所以我试图像这样关闭StaticFile处理程序(简化):
<system.webServer>
<handlers>
<remove name="StaticFile"/>
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
这会关闭StaticFile处理程序,但MVC仍然不会选择路由.
我宁愿不再创建自己的处理程序并注入ASP请求堆栈,因为看起来应该有一个MVC快乐的方法来做到这一点.
有什么想法吗?谢谢.
httphandler ×10
asp.net ×7
asp.net-mvc ×3
.net ×2
httpmodule ×2
iis ×2
iis-7 ×2
web-config ×2
c# ×1
caching ×1
colon ×1
debugging ×1
nancy ×1
performance ×1
rdlc ×1
routes ×1
security ×1
servicestack ×1
url ×1