Syndication.axd Not Working and Other Site Problems

Feb 24, 2010 at 11:46 PM
Edited Feb 24, 2010 at 11:53 PM

I just moved hosting providers and for whatever reason, syndication.axd is missing from my implementation and it's not generating automatically. How can I get this working? I've tried under both 1.4.5 and 1.6.

I also can't do anything other than enter posts and some admin stuff. I can't enter comments, delete widgets, edit widgets, etc.

1.4.5 - http://www.sqlha.com/test

1.6 - http://www.sqlha.com/blog

I also noticed that the ratings entry disappears for 1.6. Any ideas on that as well?

This is IIS7, which I know has had some issues. I've done my share of searching here. I did see this thread (http://blogengine.codeplex.com/Thread/View.aspx?ThreadId=59277). It didn't help me.

Thanks.

Coordinator
Feb 24, 2010 at 11:57 PM

None of the AXD handlers appear to be working on your site -- I only looked at the BE 1.6 site.

Are you using the web.config file that comes with BE ?  Are you using any type of URL rewriting technology?  Is there a web.config file in the root of your site (sqlha.com) ?

Do you know if your IIS7 site is configured to be in an "Integrated mode" application pool?  Or a "classic mode" application pool?  Oftentimes a web host allows you to choose.  I use Integrated mode myself.  If you're in classic mode, I would try switching to integrated mode.  Or if you're already in integrated mode, you could try classic mode just to see if there's a difference ... although integrated mode is better.

Feb 25, 2010 at 12:08 AM
Edited Feb 25, 2010 at 12:09 AM

Yes, I am using the web.config file (root of /Blog, no other one) that comes with BE. I just re-uploaded it from the source just changing it to DB and the right DB connection string.

I also tried putting it in Integrated mode, and I get this error:

500 - Internal server error.

There is a problem with the resource you are looking for, and it cannot be displayed.

So I put it back to classic mode and at least the entries display.

Here's the code for web.config:
<?xml version="1.0"?>
<configuration>
 <configSections>
  <sectionGroup name="BlogEngine">
   <section name="blogProvider" requirePermission="false" type="BlogEngine.Core.Providers.BlogProviderSection, BlogEngine.Core" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
  </sectionGroup>
 </configSections>
 <BlogEngine>
  <blogProvider defaultProvider="DbBlogProvider">
   <providers>
    <add name="XmlBlogProvider" type="BlogEngine.Core.Providers.XmlBlogProvider, BlogEngine.Core"/>
    <add name="DbBlogProvider" type="BlogEngine.Core.Providers.DbBlogProvider, BlogEngine.Core" connectionStringName="BlogEngine"/>
   </providers>
  </blogProvider>
 </BlogEngine>
 <connectionStrings>
  <clear/>
  <add name="BlogEngine" connectionString="Data Source=foo;User ID=foo;Password=foo;persist security info=False;initial catalog=foo;" providerName="System.Data.SqlClient"/>
 </connectionStrings>
 <appSettings>
  <add key="BlogEngine.FileExtension" value=".aspx"/>
  <!-- You can e.g. use "~/blog/" if BlogEngine.NET is not located in the root of the application -->
  <add key="BlogEngine.VirtualPath" value="~/"/>
  <!-- The regex used to identify mobile devices so a different theme can be shown -->
  <add key="BlogEngine.MobileDevices" value="(nokia|sonyericsson|blackberry|samsung|sec\-|windows ce|motorola|mot\-|up.b|midp\-)"/>
  <!-- The name of the role with administrator permissions -->
  <add key="BlogEngine.AdminRole" value="Administrators"/>
  <!--This value is to provide an alterantive location for storing data.-->
  <add key="StorageLocation" value="~/App_Data/"/>
  <!--A comma separated list of script names to hard minify. It's case-sensitive. -->
  <add key="BlogEngine.HardMinify" value="blog.js,widget.js,WebResource.axd"/>
 </appSettings>
 <system.web>
  <compilation debug="false">
   <assemblies>
    <add assembly="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
   </assemblies>
  </compilation>
  <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="auto" uiCulture="auto"/>
  <httpRuntime enableVersionHeader="false" useFullyQualifiedRedirectUrl="true" maxRequestLength="16384" executionTimeout="3600" requestLengthDiskThreshold="16384"/>
  <machineKey validationKey="D9F7287EFDE8DF4CAFF79011D5308643D8F62AE10CDF30DAB640B7399BF6C57B0269D60A23FBCCC736FC2487ED695512BA95044DE4C58DC02C2BA0C4A266454C" decryptionKey="BDAAF7E00B69BA47B37EEAC328929A06A6647D4C89FED3A7D5C52B12B23680F4" validation="SHA1" decryption="AES"/>
  <authentication mode="Forms">
   <forms timeout="129600" name=".AUXBLOGENGINE" protection="All" slidingExpiration="true" loginUrl="~/login.aspx" cookieless="UseCookies"/>
  </authentication>
  <pages enableSessionState="false" enableViewStateMac="true" enableEventValidation="true">
   <controls>
    <add namespace="Controls" tagPrefix="blog"/>
   </controls>
  </pages>
  <customErrors mode="RemoteOnly" defaultRedirect="~/error404.aspx">
   <error statusCode="404" redirect="~/error404.aspx"/>
  </customErrors>
  <membership defaultProvider="XmlMembershipProvider">
   <providers>
    <clear/>
    <add name="XmlMembershipProvider" type="BlogEngine.Core.Providers.XmlMembershipProvider, BlogEngine.Core" description="XML membership provider" passwordFormat="Hashed"/>
    <add name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="BlogEngine" applicationName="BlogEngine"/>
    <add name="DbMembershipProvider" type="BlogEngine.Core.Providers.DbMembershipProvider, BlogEngine.Core" passwordFormat="Hashed" connectionStringName="BlogEngine"/>
   </providers>
  </membership>
  <roleManager defaultProvider="XmlRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName=".BLOGENGINEROLES">
   <providers>
    <clear/>
    <add name="XmlRoleProvider" type="BlogEngine.Core.Providers.XmlRoleProvider, BlogEngine.Core" description="XML role provider"/>
    <add name="SqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="BlogEngine" applicationName="BlogEngine"/>
    <add name="DbRoleProvider" type="BlogEngine.Core.Providers.DbRoleProvider, BlogEngine.Core" connectionStringName="BlogEngine"/>
   </providers>
  </roleManager>
  <siteMap defaultProvider="PageSiteMap" enabled="true">
   <providers>
    <add name="PageSiteMap" description="The site map provider that reads in the .sitemap XML files." type="BlogEngine.Core.Web.Controls.PageSiteMap, BlogEngine.Core"/>
    <add name="SecuritySiteMap" description="Used for authenticated users." type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" securityTrimmingEnabled="true" siteMapFile="Web.sitemap"/>
   </providers>
  </siteMap>
  <httpModules>
   <add name="WwwSubDomainModule" type="BlogEngine.Core.Web.HttpModules.WwwSubDomainModule, BlogEngine.Core"/>
   <add name="UrlRewrite" type="BlogEngine.Core.Web.HttpModules.UrlRewrite, BlogEngine.Core"/>
   <add name="CompressionModule" type="BlogEngine.Core.Web.HttpModules.CompressionModule, BlogEngine.Core"/>
   <add name="ReferrerModule" type="BlogEngine.Core.Web.HttpModules.ReferrerModule, BlogEngine.Core"/>
   <!--Remove the default ASP.NET modules we don't need-->
   <remove name="PassportAuthentication"/>
   <remove name="Profile"/>
   <remove name="AnonymousIdentification"/>
  </httpModules>
  <httpHandlers>
   <add verb="*" path="file.axd" type="BlogEngine.Core.Web.HttpHandlers.FileHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="image.axd" type="BlogEngine.Core.Web.HttpHandlers.ImageHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="syndication.axd" type="BlogEngine.Core.Web.HttpHandlers.SyndicationHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="sitemap.axd" type="BlogEngine.Core.Web.HttpHandlers.SiteMap, BlogEngine.Core" validate="false"/>
   <add verb="*" path="trackback.axd" type="BlogEngine.Core.Web.HttpHandlers.TrackbackHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="pingback.axd" type="BlogEngine.Core.Web.HttpHandlers.PingbackHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="opensearch.axd" type="BlogEngine.Core.Web.HttpHandlers.OpenSearchHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="metaweblog.axd" type="BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="rsd.axd" type="BlogEngine.Core.Web.HttpHandlers.RsdHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="css.axd" type="BlogEngine.Core.Web.HttpHandlers.CssHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="js.axd" type="BlogEngine.Core.Web.HttpHandlers.JavaScriptHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="rating.axd" type="BlogEngine.Core.Web.HttpHandlers.RatingHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="opml.axd" type="BlogEngine.Core.Web.HttpHandlers.OpmlHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="blogml.axd" type="BlogEngine.Core.Web.HttpHandlers.BlogMLExportHandler, BlogEngine.Core" validate="false"/>
   <add verb="*" path="sioc.axd" type="BlogEngine.Core.Web.HttpHandlers.Sioc, BlogEngine.Core" validate="false"/>
   <add verb="*" path="apml.axd" type="BlogEngine.Core.Web.HttpHandlers.Apml, BlogEngine.Core" validate="false"/>
   <add verb="*" path="foaf*.axd" type="BlogEngine.Core.Web.HttpHandlers.Foaf, BlogEngine.Core" validate="false"/>
  </httpHandlers>
 </system.web>
 <system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <!-- Enable the staticContent section below to add Expires headers to images for better performance.
     Some hosting providers does not allow the staticContent section to be set. -->
  <!--
  <staticContent>
   <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
  </staticContent>
  -->
  <modules>
   <add name="WwwSubDomainModule" type="BlogEngine.Core.Web.HttpModules.WwwSubDomainModule, BlogEngine.Core"/>
   <add name="UrlRewrite" type="BlogEngine.Core.Web.HttpModules.UrlRewrite, BlogEngine.Core"/>
   <add name="CompressionModule" type="BlogEngine.Core.Web.HttpModules.CompressionModule, BlogEngine.Core"/>
   <add name="ReferrerModule" type="BlogEngine.Core.Web.HttpModules.ReferrerModule, BlogEngine.Core"/>
  </modules>
  <handlers accessPolicy="Read, Write, Script, Execute">
   <add name="FileHandler" verb="*" path="file.axd" type="BlogEngine.Core.Web.HttpHandlers.FileHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="ImageHandler" verb="*" path="image.axd" type="BlogEngine.Core.Web.HttpHandlers.ImageHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="Syndication" verb="*" path="syndication.axd" type="BlogEngine.Core.Web.HttpHandlers.SyndicationHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="Sitemap" verb="*" path="sitemap.axd" type="BlogEngine.Core.Web.HttpHandlers.SiteMap, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="Trackback" verb="*" path="trackback.axd" type="BlogEngine.Core.Web.HttpHandlers.TrackbackHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="Pingback" verb="*" path="pingback.axd" type="BlogEngine.Core.Web.HttpHandlers.PingbackHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="OpenSearch" verb="*" path="opensearch.axd" type="BlogEngine.Core.Web.HttpHandlers.OpenSearchHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="MetaWeblog" verb="*" path="metaweblog.axd" type="BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="RSD" verb="*" path="rsd.axd" type="BlogEngine.Core.Web.HttpHandlers.RsdHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="CssHandler" verb="*" path="css.axd" type="BlogEngine.Core.Web.HttpHandlers.CssHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="Javascript" path="js.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.JavaScriptHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="Rating" verb="*" path="rating.axd" type="BlogEngine.Core.Web.HttpHandlers.RatingHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="Opml" verb="*" path="opml.axd" type="BlogEngine.Core.Web.HttpHandlers.OpmlHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="BlogML" verb="*" path="blogml.axd" type="BlogEngine.Core.Web.HttpHandlers.BlogMLExportHandler, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="SIOC" verb="*" path="sioc.axd" type="BlogEngine.Core.Web.HttpHandlers.Sioc, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="Apml" verb="*" path="apml.axd" type="BlogEngine.Core.Web.HttpHandlers.Apml, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
   <add name="Foaf" verb="*" path="foaf*.axd" type="BlogEngine.Core.Web.HttpHandlers.Foaf, BlogEngine.Core" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode"/>
  </handlers>
  <!-- Enable the httpProtocol section below to manipulate some HTTP headers.
     Some hosting providers does not allow the httpProtocol section to be set. -->
  <!--
  <httpProtocol>
   <customHeaders>
    <remove name="X-Powered-By" />
    <add name="Etag" value=" " />
   </customHeaders>
  </httpProtocol>
  -->
 </system.webServer>
</configuration>

 

Feb 25, 2010 at 12:31 AM

Also, in terms of permissions here's what's set for the main website as well as /Blog:

Script Source Access - Enabled
Read - Enabled
Write - Enabled
Directory Browsing - Disabled
Execute permissions - Scripts and executables

Is that too much? Not enough?

Coordinator
Feb 25, 2010 at 12:56 AM

Those permissions should be sufficient.

If possible, I would try and get more details on the server error 500 when you put it into integrated mode.  BE and the web.config file you show should run in IIS7 / Integrated mode.

If you have control over the server, I would turn on Failed Request Tracing to get a detailed error log of where the error is occurring.  Some webhosts even offer getting these error files thru their control panel, or by asking them.

Even for the 404 errors while in classic mode, you might be able to get some additional logging details via Failed Request Tracing.

Feb 25, 2010 at 1:08 AM

I don't have control over the server other than what is exposed in the hoster's control panel. I don't see anything about Failed Request Tracing. I can ask.

I didn't have any of these issues under IIS6 and my old hosting company. What started this was an aborted migration attempt by them to a new platform of my website, so I switched providers. The new ones seem to be great, I just have this issue. They helped me get to this point where I can at least see the posts.

My Pool Type is exclusive, so I'm isolated that way.

Any other ideas? I'm pretty baffled.

Coordinator
Feb 25, 2010 at 1:18 AM

If you're in classic mode (which you are now), you can try removing the entire <system.webServer> section out of the web.config file.

I'm not exactly sure if it will help or if the site will run, but it's just something to try.

Feb 25, 2010 at 1:41 AM

It runs without that section. Doesn't solve the Widget/Comment issue, but here's what I get when I click on Subscribe (the axd thing) - that's at least progress:

404.3 - File or directory not found: MIME map policy prevents this request.

The page you are requesting cannot be served due to the Multipurpose Internet Mail Extensions (MIME) map policy that is configured on the Web server. The page you requested has a file name extension that is not recognised, and is therefore not allowed.

What setting do I need to have them change or what do I need to look for?

Feb 25, 2010 at 1:51 AM

OK, found where to add a MIME type. I tried text/plain and text/javascript. Neither seems to do the right thing, but I don't get 404.3.

Coordinator
Feb 25, 2010 at 2:01 AM

If I were you, I would Google around for this.  I don't think it's BE specific since even non-BE .AXD extensions are also not working on your site (before and now too).  A very common .AXD extension in ASP.NET is the WebResource.axd handler.  Here's the URL to the WebResource.axd file reference in your site's HTML being sent to the browser:

http://www.sqlha.com/Blog/WebResource.axd?d=j246orv_38DeKtGbza6y6A2&t=633739633400000000

Even that is leading to a 404 error.  This AXD handler would normally return some JavaScript to the browser for ASP.NET functionality.

Probably this can be fixed by making some necessary modifications to the web.config file.  Or via the IIS remote manager which is simply a GUI tool that will modify your web.config file.  For example, when you added the MIME type a bit ago, if you did that thru the IIS remote manager, it most likely inserted that into your web.config file for you.

I'm sure there's others who have run into this.  My guess is that on most IIS7 servers, there are some "basic" handlers registered at the machine.config level, and these propagate down to the individual websites.  But in your case, I'm guessing some of these more basic, common handlers aren't registered at the machine.config level.  So it'll be up to you to register those yourself at your web.config level.

Some keywords to Google for are IIS7, 404, handler, AXD, WebResource.  Maybe something else will pop into my mind later, or someone else here might be able to help too.  But I think the answer can be found via a web search and a little luck!

Feb 25, 2010 at 4:54 AM

Unfortunately, I'm not an IIS expert so I couldn't begin to figure out what's missing from the basic config. I do have a request into my hosting company to see what they can figure out. If I can fix the problem I'll post the fix. Google/Bing didn't come up with anything fruitful.

Aug 30, 2010 at 5:00 AM
Edited Aug 31, 2010 at 6:04 AM

I am frustrated beyond all belief and beginning to wonder if I shouldn't just stay with WordPress.  I have the exact same problem with BE (or IIS) not generating the Syndication.axd.  My site is self-hosted on IIS6.  I am using the default web.config with 1.6.1 installed.  Most everything appears to be working now with the exception of RSS.  Unfortunately I am not a programmer but I understand enough that with some guidance I can make modifications as needed.  Would love if someone my be able to explain "why" feeds aren't working or where I can look in my configuration that might explain where the wheels are coming off.

web.config is in the root of the site
blog.js has not been modified

 

 

Aug 31, 2010 at 6:03 AM
Edited Aug 31, 2010 at 6:04 AM

I finally resolved this issue for the benefit of anyone else who may be banging their head against the wall with syndication and other AXD pages not working.  A third party firewall that I run on IIS was not configured to allow HTTP extenstions "AXD".  Added AXD to the list of permitted extensions and suddenly all is well in Dave land.