web.sitemap не найден, но он существует

#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