当前位置:  开发笔记 > 后端 > 正文

在ASP.NET/IIS的URL中使用冒号(:)

如何解决《在ASP.NET/IIS的URL中使用冒号(:)》经验,为你挑选了1个好方法。

我正在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).也就是说,它更像是动态评估的查询选择而不是硬连线文件路径.它在服务器上进行评估.

别搞错了,我不是在这里建立一个典型的网站甚至是网络服务.



1> Jacob Krall..:

更改web.config中的requestPathInvalidCharacters属性httpRuntime:


并且ASP.NET不应再阻止请求路径中的冒号.


这样安全吗?我们想要删除结肠,而不是其他字符吗?
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有