#asp.net #web.sitemap
#asp.net #web.карта сайта
Вопрос:
У меня есть ASP.net мы с сайтом создали файл web.sitemap в корневом каталоге. Она содержит:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode>
<siteMapNode url="~/Default.aspx" title="Home" description="Rado Home" />
<siteMapNode url="" title="Structural" description="">
<siteMapNode url="" title="Doors" description=""/>
<siteMapNode url="" title="Staircases" description=""/>
<siteMapNode url="" title="Post Boxes" description=""/>
</siteMapNode>
<siteMapNode url="" title="Functional">
<siteMapNode url="" title="Tables" />
<siteMapNode url="" title="Features" />
</siteMapNode>
<siteMapNode url="" title="Sculpture">
<siteMapNode url="" title="Wall" />
<siteMapNode url="" title="Free Standing" />
</siteMapNode>
<siteMapNode url="" title="Smithing">
<siteMapNode url="" title="Gold" />
<siteMapNode url="" title="Silver" />
<siteMapNode url="" title="Copper" />
</siteMapNode>
<siteMapNode url="~/About.aspx" title="About"/>
<siteMapNode url="~/Contact.aspx" title="Contact"/>
</siteMapNode>
</siteMap>
Затем я создал меню на своей главной странице следующим образом:
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="server" />
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" Orientation="Horizontal" DataSourceID="SiteMapDataSource1" />
При запуске сайта я получаю следующую ошибку:
Файл web.sitemap, требуемый XmlSiteMapProvider, не существует.
Есть идеи относительно того, что может быть не так?
Комментарии:
1. Является ли корневой каталог каталогом приложения?
2. Да, это каталог приложения
Ответ №1:
web.config
Содержит ли ваш файл раздел sitemap?
<siteMap>
<providers>
<add name="SiteMapDataSource1" description="Default SiteMap provider." type="System.Web.XmlSiteMapProvider" siteMapFile="/MyApplication/Web.sitemap" />
<add name="AdminSiteMap" description="Default SiteMap provider." type="System.Web.XmlSiteMapProvider" siteMapFile="/MyApplication/Admin.sitemap" />
</providers>
</siteMap>
нравится это?
Ответ №2:
Вызывали ли вы созданную вами карту сайта web.sitemap?
Если нет, то вам нужно очистить поставщиков в теге sitemap и добавить нового поставщика, который включает имя вашей карты сайта.
Это показывает запись по умолчанию в корневом web.config, которую вам необходимо очистить
Комментарии:
1. Да, он называется web.sitemap, и в файле конфигурации нет ничего для sitemaps. Я в тупике…
Ответ №3:
Я это исправил. По-видимому, для файла web.sitemap не было достаточно разрешений, поэтому пользователь, от имени которого был запущен сайт, не мог прочитать файл. В связи с этим, кто-нибудь знает, как я могу узнать, от имени какого пользователя сайт обращается к файлам?
Комментарии:
1. это зависит от платформы. В XP это aspnet, но в Win2003 и более поздних версиях (iis 6 и 7) вы ищете процесс w3wp, запускаемый networkservice.
2. Круто, спасибо. Это помогает это прояснить. Это странно, потому что я предоставил сетевой службе полные права доступа к сайту. Ну что ж, теперь это работает 🙂
3. Как вы добавили разрешения пользователю?
4. Щелкните правой кнопкой мыши на файле, перейдите в свойства, а затем Безопасность, где вы можете редактировать разрешения
Ответ №4:
эта проблема также может возникнуть, если вы создали веб-сайт, скопировав его с другого веб-сайта, но забыли создать соответствующее приложение в IIS