У меня была та же проблема.
Сначала я загрузил XML-файл на локальный рабочий стол, и я получил Content is not allowed in prolog
во время импорта файла на сервер портала. Даже визуальный файл выглядел хорошо для меня, но как-то он был поврежден.
Итак, я перезагрузил тот же файл и попробовал то же самое, и он работал.
Мне нравятся УСПОКОИТЕЛЬНЫЕ, удобные для пользователя и hackable URL.
Что это означает? Позволяет запускаются с удобных для пользователя URL. Мне удобный для пользователя URL является чем-то легким для ввода и легкий помнить /Default.aspx?action=show&userID=140
не отвечает ни одному из этих требований. URL как '/users/troethom´ кажется логичным все же.
Это приводит к следующему вопросу. hackable URL является URL, который пользователь может изменить и все еще дариться результат. Если URL hackable, и URL для моего профиля /users/troethom
было бы безопасно удалить мое имя пользователя для получения списка пользователей (/users
).
Используя УСПОКОИТЕЛЬНЫЕ URL довольно подобно идеям позади моих других предложений. Вы разрабатываете URL для пользователя а не для машины, и поэтому URL должен коснуться содержания а не технический бэкенд Вашего сайта. URL как '/users' ´имеет больше смысла, чем ´/users/list´, и URL как ´/category/programming/javascript ´(представление подкатегории' JavaScript 'в категории' программирование 'лучше, чем ´/category/show/12´.
Действительно более трудно опустить идентификаторы, но в моем мире это стоит усилия.
Также консультируйтесь с разделом Understanding URIs по Общим проблемам Реализации HTTP W3C. Это имеет список распространенных ошибок при разработке URIs. Другой хороший ресурс Находчив По сравнению с URL Поиска Hackable.
Можно ли хотеть смотреть на вопрос "Дружественная схема URL?".
Особенно, Larry. Ответ Smithmier предоставил список общих схем URL при использовании MVC в ASP.NET.
Кроме того, можно рассмотреть использование различных глаголов для многократного использования тех же маршрутов для различных действий. Например, ПОЛУЧИТЬ запрос к "Products/Edit/45" отобразил бы редактора продукта, тогда как POST к тому же URL обновит продукт. Можно использовать атрибут AcceptVerb для выполнения этого:
[AcceptVerb("GET")]
public ActionResult Edit(int id)
{
ViewData["Product"] = _products.Get(id);
return View();
}
[AcceptVerb("POST")]
public ActionResult Edit(int id, string title, string description)
{
_products.Update(id, title, description);
TempData["Message"] = "Changes saved successfully!";
return RedirectToAction("Edit", new { id });
}
Счет de hÓra записал, что очень хорошее эссе дало право критериям отображения веб-ресурса платформ, который определенно стоит чтения.
Добавить к комментариям troethom, УСПОКОИТЕЛЬНЫМ обычно также, означает, что, например, для создания нового пользователя Вы ПОМЕСТИЛИ бы представление/users/newusername
УСПОКОИТЕЛЬНЫЙ в основном использует 5 стандартных Методов HTTP (ПОЛУЧИТЕ, ПОМЕСТИТЕ, POST, УДАЛИТЕ, ГОЛОВА) для управления/доступа содержанием.
Хорошо, это не легко для веб-браузера, но можно всегда использовать, перегрузился, POST (отправьте на/users/username с представлением пользователя для изменения некоторых деталей и т.д.
Это - хороший способ сделать вещи, я рекомендовал бы читать УСПОКОИТЕЛЬНЫЕ веб-сервисы для получения лучшего понимания :D (и это - проклятая хорошая книга!)
Я видел два основных принятых способа приблизиться к этой теме...
Каждый описан в проектной документации MvcContrib
и другой описан в сообщении в блоге Stephen Walther (который я лично предпочитаю).