首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用UI-路由器和MVC 5访问Handler

使用UI-路由器和MVC 5访问Handler
EN

Stack Overflow用户
提问于 2016-11-10 15:44:22
回答 1查看 207关注 0票数 0

我正在使用一个库,它在我的角度应用程序中向.axd路径提交一个"POST“请求。由于我使用的是UI-路由器,似乎附加到URL的#/阻止了请求正确地到达DLL。

在库中需要访问的URL是:

http://localhost:8080/MyApplication/MyArea/ModuleName#/ThermalLabelWebEditor.axd?_=1478731762000

但是,我从这个"POST“请求中得到的只是页面的HTML数据。我相信这是MVC以其默认方式处理路径的症状,搜索与上述URL匹配的页面,而不是访问DLL。

我想要达到的目标是

代码语言:javascript
复制
routes.IgnoreRoute("{*anything}/ThermalLabelWebEditor.axd/{*pathInfo}");

但是,这在MVC中是无效的。

此外,我在区域的Web.config文件中指定了这个库所需的httpHandler,主要是:

代码语言:javascript
复制
<system.web>
    <httpHandlers>
        <add path="ThermalLabelWebEditor.axd" verb="*" type="Neodynamic.Web.ThermalLabelEditor.ThermalLabelWebEditor"/>
...
<system.webServer>
    <handlers>
        <add name="TLWE" path="ThermalLabelWebEditor.axd" verb="*" preCondition="integratedMode" type="Neodynamic.Web.ThermalLabelEditor.ThermalLabelWebEditor" />

现在,我知道我可以在我的角模块的配置中指定$locationProvider.html5Mode(true);。但是,如果可能的话,我想避免这样做,因为它不能解决那些必须使用#回退的旧的、非HTML5 5浏览器的问题。

我如何为这个区域(或整个MVC应用程序)或RouteConfig.cs配置我的RouteConfig.cs文件,以确保对ThermalLabelWebEditor.axd的请求能够成功完成?

我正在使用MVC 5,.NET 4.6,角1.5.8和UI-路由器v0.3.1.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 17:47:45

经过大量调查,我确定这个问题只能在JavaScript方面解决。即使使用通配符,也没有办法让IIS在Handler的#部分解析path。由于#将如何短路URL的性质,IIS无法将请求路由到Handler,因此使用破坏应用程序的标准MVC来处理响应。类似地,即使使用routes.IgnoreRoute,MVC也不能配置为解释#字符。

这个问题的解决方案实际上是在发送请求和删除#之前解析URL。这样,就可以将处理程序映射配置为查看所讨论的MyArea/MyModule/HttpHandler.axd...路由,并在查看MVC结构之前拦截到IIS。

我应该指出,我避免在UI-路由器中使用HTML5模式的原因是为了保持浏览器的兼容性。如果启用了HTML5模式,则将修复符合HTML5 5的浏览器的问题。但是,非HTML5 5浏览器将返回到#中,从而破坏应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40531551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档