Solved

How to fix WebResource.axd error 403 because of webconfig rewrite rules IIS7 2008r2

Posted on 2013-12-03
4
2,115 Views
Last Modified: 2013-12-04
I have a Windows 2008R2 server IIS 7 running WordPress. It works fine.

I'm running asp.net pages on this server just fine until I got an app that uses Webresource.axd.

First suggested things to look at were the handlers:
I have:
               <add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode" />

 and
 
                <add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" />

So I think I'm good here (although I'm running 4.5.1 but I believe that runs under 4.0 integrated).

Next issue probably is webconfig:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
               <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
        <defaultDocument>
            <files>
                <remove value="Default.asp" />
            </files>
        </defaultDocument>
    </system.webServer>
</configuration>

Open in new window


stackoverflow.com/questions/12153195/403-forbidden-all-axd-files-aragh suggest to use:

<rule name="Ignore SubFolder" stopProcessing="true">
<match url="subFolderName" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="None" />
</rule>

but when I insert that as the first rule I get an error 500 on every page of the website.

Any suggestions?

I'm absolutely inexperienced with webconfig rewrites.

Thanks a million,

Rolf
0
Comment
Question by:rolfg
  • 2
  • 2
4 Comments
 
LVL 27

Accepted Solution

by:
Chinmay Patel earned 500 total points
ID: 39694950
How about adding a </clear> tag in your rules section in the web.config? The post you have suggested also notes the same.
0
 

Author Closing Comment

by:rolfg
ID: 39695443
The first answer does not use  <clear /> and the second doesn't talk about WordPress rules at all and I don't know what <clear /> tag does.

But I tried it this morning before production time and lo and behold it solved the problem without even adding the extra rules suggested in the first answer.

Awesome!

So what is <clear /> supposed to do? I have it seen in other samples at the beginning of  the rules as well. Something I should do as well?

Thanks!

Rolf
0
 
LVL 27

Expert Comment

by:Chinmay Patel
ID: 39695576
Hi rolfg,

Hmmm this demands an explanation. I will try to keep it short but provide you with all the details (as much as I can).

</clear> basically directs asp.net runtime to forget whatever rules are being inherited from the parent for a given setting. This applies to all the settings which can be inherited.

Here is MSDN document for your reference: http://msdn.microsoft.com/en-us/library/aa903345(v=vs.71).aspx

It is a known gotcha and you can refer to Scottgu's blog for a similar problem and explanation on those lines:
http://weblogs.asp.net/scottgu/archive/2006/11/20/common-gotcha-don-t-forget-to-clear-when-adding-providers.aspx

And about WordPress whether WordPress was mentioned or not clearly your site was inheriting some rules from its parent and that was giving you all these troubles. I don't have much insight in your environment and honestly I love asp.net but my interaction to asp.net has been reduced to almost nothing hence I will not be able to help you further troubleshoot it but yes it will be interesting to look around in parent sites to see if you find something there.

Regards,
Chinmay.
0
 

Author Comment

by:rolfg
ID: 39695902
Ok, it fixed my problem and broke something else.

Now everything like mydomain.com/wordpress-page gets a 404 error

So I had to take it out again.

Moved it to the top, saw no adverse effects, but did not fix my original error then added:
    <rules>
       <clear />
        <rule name="Ignore SubFolder" stopProcessing="true">
          <match url="^signNDA" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
          <action type="None" />
        </rule>
      ... wordpress rules ...

signNDA being the folder that uses WebResource.axd and that fixed it.

Rolf
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Scenario:  You do full backups to a internal hard drive in either product (SBS or Server 2008).  All goes well for a very long time.  One day, backups begin to fail with a message that the disk is full.  Your disk contains many, many more backups th…
Sometimes drives fill up and we don't know why.  If you don't understand the best way to use the tools available, you may end up being stumped as to why your drive says it's not full when you have no space left!  Here's how you can find out...
This tutorial will walk an individual through the steps necessary to configure their installation of BackupExec 2012 to use network shared disk space. Verify that the path to the shared storage is valid and that data can be written to that location:…
This tutorial will walk an individual through the steps necessary to join and promote the first Windows Server 2012 domain controller into an Active Directory environment running on Windows Server 2008. Determine the location of the FSMO roles by lo…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now