http://example.com/user:chaiguy
…但显然ASP.NET或IIS不允许在URL中的冒号。我做了一些挖掘,显然它被认为是一个安全问题,但是我正在使用MVC并手动处理所有url路径(只是将它们视为字符串),而不是将它们与文件系统相关联,所以我很确定不适用。
我也听到一些关于实现一个自定义Http处理程序或某事的讨论。
任何想法或想法将不胜感激。
Er…. why? SerIoUsly,why break standards? – Randolpho
…
I suggest,then,that you investigate building a web service. WCF is a nice technology for that,and it hosts well in IIS.
我碰巧喜欢网址,WCF对我来说太复杂了。我希望它与url兼容,就像REST一样,但不仅仅是导航层次结构,还是做了很好的布局。与/ users / chaiguy有关的问题是解释层次结构是没有的:在我的系统中,“user”是一个类,它不是一个文件夹。用户:chaiguy是指具有“chaiguy”值的用户类的实例,它是具有子实体的潜力的单个实体。所以例如:
…我想显示该实体的名称。如果我用你的方法做到这一点,它将如下所示:
问题是你如何知道课堂是什么,有什么价值?它可以解释为
在我的系统中,这没有意义。看看我在做什么为了给出一个稍微复杂的例子,假设我们要从多个实例中选择一个用户实体的子节点。所以用户可能有几个电子邮件地址。要选择一个,我们可以使用:
/user:chaiguy/email:me@here.com/
所以它实际上是递归的。它不是一个文件路径,它更像是一个XPath(或者可能类似于jQuery,基于我知道的几点)。也就是说,它比动态评估的查询选择多于硬连线的文件路径。它在服务器上进行评估。
不要错,我不是在这里建立一个典型的网站,甚至是网络服务。
解决方法
<httpRuntime maxRequestLength="20480" requestValidationMode="2.0" requestPathInvalidCharacters="" maxQueryStringLength="20480" />
而ASP.NET应该不再阻止请求路径中的冒号。