Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IIS/ASP/ASP.net: How to structure web-site to expose mobile version

Pretend i have an existing web-site, e.g.:

www.stackoverflow.com

i now want to expose a mobile version of this web-site:

m.stackoverflow.com

IIS, with its host-header name resolution, would normally require two web-sites to be created:

  • www.stackoverflow.com
  • m.stackoverflow.com

Except now i have two web-sites in IIS. This means i have to duplicate code/files between them. i don't need to (nor do i want to) duplicate all the "model" and "controller" code between two web-sites. i would much rather have one web-site that exposes a mobile version.

i could have the default page in m.stackoverflow.com simply perform a redirect to a mobile landing page on the "real" web-site:

m.stackoverflow.com\default.asp:

 <% Response.Redirect "www.stackoverflow.com/mobile" %>

Then the client will end up at (for example) www.stackoverflow.com/mobile/default.aspx.

This isn't what i want. i want it to appear to the browser that they are visiting m.stackoverflow.com.

So what i could do in IIS is have two host-header names for one IIS web-site:

  • stackoverflow.com
  • m.stackoverflow.com

and inspect the http-request HOST header:

GET https://stackoverflow.com/questions/ViewQuestion.aspx?qid=3623844
Host: stackoverflow.com

verses

GET https://stackoverflow.com/questions/ViewQuestion.aspx?qid=3623844
Host: m.stackoverflow.com

Except now my all my web-site pages must first inspect Host attribute, and then change rendering behavior depending on which it finds. This works somewhat well in classic ASP:

ViewQuestion.asp

<% Dim mobileVersion 

    ...

If MobileVersion Then
%>
<html>
...
</html>
<% Else %>
<html>
...
</html>
<% End If %>

But making dual view's in one page is very painful. i would prefer to have a ViewQuestion view, that is dedicated to showing a regular or mobile view.


i also know that i can't use the media=handheld media type.

  • not only do i not want to have "full" page content being sent to mobile clients (wasting their bandwidth and download speed) and then hide content based on CSS
  • not all handhelds (e.g. iPhone) honor the media=handheld media type

So what is the accepted combination of source-code and IIS configuration that best supports mobile versions of a web-site?

Edit One: Removed title reference to MVC. Don't want people to assume the use of some particular MVC framework, since i'm not using any MVC framework. i'm using ASP/ASP.net.

See also

  • Redirect mobile devices to alternate version of my site
  • How to create mobile version of asp.NET web site?
  • Creating a mobile version of a website
  • What's the most efficient way to hide content for a mobile version of a site?
  • A Better ASP.NET MVC Mobile Device Capabilities ViewEngine
like image 601
Ian Boyd Avatar asked Oct 11 '22 13:10

Ian Boyd


1 Answers

In mvc you can just submit mobile views by overriding the view engine. We created an iphone version of our site in about 3 days.

http://www.hanselman.com/blog/ABetterASPNETMVCMobileDeviceCapabilitiesViewEngine.aspx

like image 182
Code Silverback Avatar answered Oct 14 '22 09:10

Code Silverback