Url Rewriting; 404 not found on deployment serverhttp://forums.asp.net/t/1549176.aspx/1?Url+Rewriting+404+not+found+on+deployment+serverTue, 20 Apr 2010 09:20:19 -040015491763793878http://forums.asp.net/p/1549176/3793878.aspx/1?Url+Rewriting+404+not+found+on+deployment+serverUrl Rewriting; 404 not found on deployment server <p><font size="2"></p> <p>It supposed to be that using httpModules could rewrite Urls to be handled by ASP.net engine, and then write .ashx handlers to return intended files; all of this without any physical access to the server. For my website I have written httpModules and [.ashx] httpHandlers for .apsx. .xml, .xap, and image files. All handlers work pretty much the same way: &quot;category&quot; directory is imaginary; remove that from uri and return the file. For example: ~/category/default.aspx returns file at ~/default.aspx</p> <p>This website works perfectly in my testing environment. However, on the deployment server (godaddy, shared) if I use Url Rewriting (my request starts with /category) only if I requested .aspx page it gets returned; all other types return 404 not found!</p> </font><font size="2" face="Consolas"><font size="2" face="Consolas"> <p>http://www.shopstaple.net/category/dzDebug.aspx</p> </font></font><font size="2">returns default.aspx (good)</font><font size="2" face="Consolas"><font size="2" face="Consolas"> <p>http://www.shopstaple.net/category/ClientBin/GeneratedImages/dzDebug/Metadata.xml</p> </font></font><font size="2">returns 404</font><font size="2" face="Consolas"><font size="2" face="Consolas"> <p>http://www.shopstaple.net/category/ClientBin/GeneratedImages/dzDebug/dzc_output_images/sunset_files/9/0_0.jpg</p> </font></font><font size="2">returns 404</font><font size="2" face="Consolas"><font size="2" face="Consolas"></font></font><font size="2"> <p>I looked in the web.config and saw &lt;system.webserver&gt; did not duplicate everything in &lt;system.web&gt;, so I added the handler </p> <p>Why .aspx pages reroute fine, but the types handled by a .ashx each (.xap, .xml, .jpg), return 404? </p> </font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">&lt;</font></font></font><font color="#a31515" size="2" face="Consolas"><font color="#a31515" size="2" face="Consolas"><font color="#a31515" size="2" face="Consolas">add</font></font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"> </font></font></font><font color="#ff0000" size="2" face="Consolas"><font color="#ff0000" size="2" face="Consolas"><font color="#ff0000" size="2" face="Consolas">name</font></font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">=</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">&quot;</font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">zzzzashxHandler</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">&quot;</font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"> </font></font></font><font color="#ff0000" size="2" face="Consolas"><font color="#ff0000" size="2" face="Consolas"><font color="#ff0000" size="2" face="Consolas">verb</font></font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">=</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">&quot;</font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">*</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">&quot;</font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"> </font></font></font><font color="#ff0000" size="2" face="Consolas"><font color="#ff0000" size="2" face="Consolas"><font color="#ff0000" size="2" face="Consolas">path</font></font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">=</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">&quot;</font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">*.ashx</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">&quot;</font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"> </font></font></font><font color="#ff0000" size="2" face="Consolas"><font color="#ff0000" size="2" face="Consolas"><font color="#ff0000" size="2" face="Consolas">type</font></font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">=</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">&quot;</font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">System.Web.UI.SimpleHandlerFactory</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">&quot;</font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">/&gt;</font></font></font><font size="2"> to it. I published that to the deployment server, and still no luck. Can anyone tell me how to find out what is wrong?</font><font size="2" face="Consolas"><font size="2" face="Consolas"></font></font><font size="2"> <p>Deployment server: shared server, godaddy, [most likely medium trust, ] ASP.net 3.5, IIS7</p> </font><font size="2" face="Consolas"><font size="2" face="Consolas"> <p></p> </font></font><font size="2"> <p>Here is a simplified version of my web.config. I might have errors in &lt;system.webserver&gt;:</font><font size="2" face="Arial"><font size="2" face="Arial"></p> <p></p> <pre class="prettyprint">&lt;configuration&gt; &lt;configSections&gt; &lt;section name=&quot;rewriter&quot; requirePermission=&quot;false&quot; type=&quot;Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter&quot;/&gt; &lt;sectionGroup name=&quot;system.web.extensions&quot; type=&quot;System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;&gt; &lt;sectionGroup name=&quot;scripting&quot; type=&quot;System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;&gt; &lt;section name=&quot;scriptResourceHandler&quot; type=&quot;System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot; requirePermission=&quot;false&quot; allowDefinition=&quot;MachineToApplication&quot;/&gt; &lt;sectionGroup name=&quot;webServices&quot; type=&quot;System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;&gt; &lt;section name=&quot;jsonSerialization&quot; type=&quot;System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot; requirePermission=&quot;false&quot; allowDefinition=&quot;Everywhere&quot;/&gt; &lt;section name=&quot;profileService&quot; type=&quot;System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot; requirePermission=&quot;false&quot; allowDefinition=&quot;MachineToApplication&quot;/&gt; &lt;section name=&quot;authenticationService&quot; type=&quot;System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot; requirePermission=&quot;false&quot; allowDefinition=&quot;MachineToApplication&quot;/&gt; &lt;section name=&quot;roleService&quot; type=&quot;System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot; requirePermission=&quot;false&quot; allowDefinition=&quot;MachineToApplication&quot;/&gt;&lt;/sectionGroup&gt;&lt;/sectionGroup&gt;&lt;/sectionGroup&gt;&lt;/configSections&gt; &lt;rewriter&gt; &lt;rewrite url=&quot;~/(.&#43;)/DeepZoomProject\.xap&quot; to=&quot;~/XAPHandler.ashx&quot;/&gt; &lt;rewrite url=&quot;~/category/ClientBin/GeneratedImages/(.&#43;)\.xml&quot; to=&quot;~/XMLHandler.ashx&quot;/&gt; &lt;rewrite url=&quot;~/category/ClientBin/GeneratedImages/(.&#43;)\.jpg&quot; to=&quot;~/ImageHandler.ashx&quot;/&gt; &lt;rewrite url=&quot;~/category/(.&#43;)\.aspx&quot; to=&quot;~/default.aspx&quot;/&gt; &lt;/rewriter&gt; &lt;system.web&gt; &lt;httpModules&gt; &lt;add name=&quot;UrlRewriter&quot; type=&quot;Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter&quot;/&gt; &lt;add name=&quot;ScriptModule&quot; type=&quot;System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt; &lt;/httpModules&gt; &lt;httpHandlers&gt; &lt;add verb=&quot;*&quot; path=&quot;*.ashx&quot; type=&quot;System.Web.UI.SimpleHandlerFactory&quot;/&gt; &lt;remove verb=&quot;*&quot; path=&quot;*.asmx&quot;/&gt; &lt;add verb=&quot;*&quot; path=&quot;*.asmx&quot; validate=&quot;false&quot; type=&quot;System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt; &lt;add verb=&quot;*&quot; path=&quot;*_AppService.axd&quot; validate=&quot;false&quot; type=&quot;System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt; &lt;add verb=&quot;GET,HEAD&quot; path=&quot;ScriptResource.axd&quot; validate=&quot;false&quot; type=&quot;System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt; &lt;/httpHandlers&gt; &lt;/system.web&gt; &lt;system.webServer&gt; &lt;modules runAllManagedModulesForAllRequests=&quot;true&quot;&gt; &lt;remove name=&quot;ScriptModule&quot;/&gt;&lt;add name=&quot;UrlRewriter&quot; type=&quot;Intelligencia.UrlRewriter.RewriterHttpModule&quot;/&gt; &lt;add name=&quot;ScriptModule&quot; preCondition=&quot;managedHandler&quot; type=&quot;System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt;&lt;/modules&gt; &lt;validation validateIntegratedModeConfiguration=&quot;false&quot;/&gt; &lt;handlers&gt; &lt;remove name=&quot;WebServiceHandlerFactory-Integrated&quot;/&gt; &lt;remove name=&quot;ScriptHandlerFactory&quot;/&gt; &lt;remove name=&quot;ScriptHandlerFactoryAppServices&quot;/&gt; &lt;remove name=&quot;ScriptResource&quot;/&gt; &lt;add name=&quot;zzzzashxHandler&quot; verb=&quot;*&quot; path=&quot;*.ashx&quot; type=&quot;System.Web.UI.SimpleHandlerFactory&quot;/&gt; &lt;add name=&quot;ScriptHandlerFactory&quot; verb=&quot;*&quot; path=&quot;*.asmx&quot; preCondition=&quot;integratedMode&quot; type=&quot;System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt; &lt;add name=&quot;ScriptHandlerFactoryAppServices&quot; verb=&quot;*&quot; path=&quot;*_AppService.axd&quot; preCondition=&quot;integratedMode&quot; type=&quot;System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt; &lt;add name=&quot;ScriptResource&quot; verb=&quot;GET,HEAD&quot; path=&quot;ScriptResource.axd&quot; preCondition=&quot;integratedMode&quot; type=&quot;System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt; &lt;/handlers&gt; &lt;/system.webServer&gt; &lt;/configuration&gt;</pre> <P></FONT></FONT><FONT size=2> <P>Here is also my xmlHandler.ashx:</P> <P></P></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas></P><pre class="prettyprint">&lt;%@ WebHandler Language="C#" Class="XMLHandler.XMLHandler" %&gt; using System; using System.Web; namespace XMLHandler { public class XMLHandler : IHttpHandler { public bool IsReusable { get { return false; } } public void ProcessRequest(HttpContext context) { context.Response.Clear(); context.Response.ContentType = "text/xml"; context.Response.ContentEncoding = System.Text.Encoding.UTF8; string[] UriSections = context.Request.RawUrl.Split(new Char[] { '/' }); if (!(UriSections[2] == "category" &amp;&amp; UriSections[3] == "ClientBin" &amp;&amp; UriSections[4] == "GeneratedImages")) throw new Exception("Requested xml file outside of category/ClientBin/GeneratedImages directory."); System.Text.StringBuilder xmlFile = new System.Text.StringBuilder(""); for(int i=0; i&lt;UriSections.Length; i++) { if (UriSections[i] != "category") { if (i == UriSections.Length - 1) xmlFile.Append(UriSections[i]); else xmlFile.Append(UriSections[i] + "/"); } } context.Response.TransmitFile(xmlFile.ToString()); } } } </pre> <p><br> &nbsp;</p> <p></font></font>&nbsp;</p> 2010-04-20T09:20:19-04:00