Я реализую собственный контроллер в ASP.NET MVC, и действительно хотят иметь возможность использовать двоеточие в URL, чтобы я мог идентифицировать имена классов / столбцов и их значения, например, так :
http://example.com/user:chaiguy
... но, очевидно, ASP.NET или IIS не допускают двоеточия в URL. Я немного покопался и, видимо, это считается проблемой безопасности, , но , я использую MVC и обрабатываю все пути URL-адресов вручную (просто рассматривая их как строки), а не связывая их к файловой системе, так что я уверен, что это не относится.
Я также слышал разговоры о реализации собственного обработчика Http или чего-то подобного.
Любые мысли или идеи будут высоко ценится.
Э-э ... почему? Серьезно, зачем нарушать стандарты? - Рандольфо
...
Тогда я предлагаю вам заняться созданием веб-службы. WCF - хорошая технология для этого, и она хорошо работает в IIS.
Мне нравятся URL, и WCF слишком сложен для моих целей. Я хочу, чтобы он был совместим с url, как REST, но мог бы больше, чем просто перемещаться по иерархии или делать хорошо продуманные вещи. Проблема, с которой я столкнулся в / users / chaiguy, заключается в том, что она интерпретирует иерархию там, где ее нет: в моей системе «пользователь» - это класс, а не папка. user: chaiguy означает экземпляр пользовательского класса со значением «chaiguy», и это единственная сущность, которая может иметь дочерние сущности. Так, например:
/user:chaiguy/name
... Я хотел бы отобразить название этой сущности. Если бы я сделал это с вашим методом, это выглядело бы так:
/users/chaiguy/name
Проблема в том, как узнать, что это за класс и какова его ценность? Это может быть интерпретировано как
/users/chaiguy:name
в моей системе, и это не имеет смысла. Видишь, к чему я клоню? Чтобы привести немного более сложный пример, предположим, что мы хотим выбрать дочерний элемент пользовательского объекта из нескольких экземпляров. Таким образом, у пользователя может быть несколько адресов электронной почты. Чтобы выбрать один, мы могли бы использовать:
/user:chaiguy/email:me@here.com/
Так что это на самом деле рекурсивно. Это не путь к файлу, это больше похоже на XPath (или, может быть, похоже на jQuery, основываясь на том, что я пока мало о нем знаю). То есть это скорее выбор динамически оцениваемого запроса, чем жестко заданный путь к файлу. Оценивается на сервере.
Не заблуждайтесь, я не создаю здесь типичный веб-сайт или даже веб-сервис.