【问题标题】:IIS/ASP/ASP.net: How to structure web-site to expose mobile versionIIS/ASP/ASP.net:如何构建网站以公开移动版本
【发布时间】:2011-07-13 19:48:27
【问题描述】:

假装我有一个现有的网站,例如:

www.stackoverflow.com

我现在想公开这个网站的移动版本:

m.stackoverflow.com

IIS 及其主机头名称解析通常需要创建 两个 网站:

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

除了现在我在 IIS 中有两个网站。这意味着我必须在它们之间复制代码/文件。我不需要(也不想)在两个网站之间复制所有“模型”和“控制器”代码。我宁愿有一个公开移动版本的网站。

可以m.stackoverflow.com 中的default 页面只需执行重定向到“真实”网站上的移动登录页面:

m.stackoverflow.com\default.asp:

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

然后客户端将结束于(例如)www.stackoverflow.com/mobile/default.aspx

这不是我想要的。我希望在浏览器中显示他们正在访问m.stackoverflow.com

所以我可以在 IIS 中为 一个 IIS 网站设置两个主机头名称:

  • stackoverflow.com
  • m.stackoverflow.com

并检查 http-request HOST 标头:

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

诗句

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

除了现在我所有的网站页面必须首先检查Host 属性,然后根据它找到的更改呈现行为。这在经典 ASP 中运行良好:

ViewQuestion.asp

<% Dim mobileVersion 

    ...

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

但是在一个页面中制作双视图是非常痛苦的。我更喜欢有一个ViewQuestion 视图,专门用于显示常规或移动视图。


我也知道我不能使用media=handheld 媒体类型。

  • 我不仅想要将“完整”页面内容发送到移动客户端(浪费他们的带宽和下载速度)然后基于 CSS 隐藏内容
  • 并非所有手持设备(例如 iPhone)都支持 media=handheld 媒体类型

那么,接受最能支持移动版网站的源代码和 IIS 配置组合是什么?

编辑一:删除了对 MVC 的标题引用。不希望人们假设使用某些特定的 MVC 框架,因为我使用任何 MVC 框架。我正在使用 ASP/ASP.net。

另见

【问题讨论】:

标签: asp.net iis mobile mobile-website


【解决方案1】:

在 mvc 中,您可以通过覆盖视图引擎来提交移动视图。我们在大约 3 天内创建了我们网站的 iphone 版本。

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

【讨论】:

  • 看起来很有趣,但是如何改变视图?
  • 您创建第二个视图,虚拟路径提供程序根据请求确定要服务的视图。
【解决方案2】:

您可以使用 IIS 中的虚拟目录将两个应用程序指向相同的文件夹,这样您就只有一个应用程序副本。如果您的模型和控制器代码与生成视图的代码分开,这将更加容易。

【讨论】:

  • 那会是什么样子?我是否为所有文件夹创建一个虚拟目录?
  • 您可以保留您的主应用程序,并创建您的第二个应用程序 m.my-site.com 并为每个文件夹创建虚拟目录并将它们指向您的主应用程序中的文件夹。实际上,您也可以将根目录指向与主应用程序相同的根目录。需要注意的一件事是,如果您更改 web.config,它将同时针对这两个应用程序进行更新。创建虚拟文件夹的说明在这里 C:\svn\branches\ezprints.com_2010-04-22\EZP\Source\EZP.Printstore.Presentation.Web
【解决方案3】:

您应该通过 MS Web Platform Installer 查看此工具

网址重写 2.0

应用程序请求路由 2.5

【讨论】:

  • 您能否详细说明如何使用 URL Rewrite 2.0 来解决我的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 2011-01-01
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多