比如说PC的IE和PocketPC的IE,选择不同的LoginURL <authentication mode="Forms">
<forms name="myform" loginUrl="login.aspx" protection="All" timeout="120"/>

解决方案 »

  1.   

    这个不应该是放在web.config里面配置吧,应该放在Global.asax的后台代码里面处理吧
      

  2.   

    只能代码处理吧
    不过不知道代码处理之后怎么结合form验证
      

  3.   

    看来大家都好像没有什么办法哦。请问 ylh1223(YLH) ,你觉得在global中应该如何处理?
      

  4.   

    最简单的就是在js里写好,不过的浏览器跳转到不同的页面。session_begin里也可以。先读出客户端用的是什么浏览器,再跳转到相应的页面。
      

  5.   

    用MobileCapabilities class来处理吧
    或者直接判断UserAgent
      

  6.   

    如果自己写适配可以在web.config里面实现, 当然也可以用自己用HtmlModule或者直接用 Global的Application_BeginRequest里面判断!
      

  7.   

    简单的说,如果我想在一个Form认证登陆的 WebApplication里面是用两页: login1.aspx和 login2.aspx,分别对应两种 UserAgent: IE和PocketIE,应该如何做呢?
      

  8.   

    在页面Page_Onload方法中或者Global的Application_BeginRequest方法中可以用下面两种方法
    1.
    MobileCapabilities currentCapabilities = (MobileCapabilities)HttpContext.Current.Request.Browser;
    if (currentCapabilities.IsMobileDevice)
    HttpContext.Current.Server.Transfer("Login2.aspx", true);
    else
    HttpContext.Current.Server.Transfer("Login1.aspx", true);
    ...
    2.
    String url = HttpContext.Current.Request.Path;
    String userAgent = HttpContext.Current.Request.UserAgent;int startPos = url.LastIndexOf("/");
    if (startPos != -1)
    url = virtualPath.Substring(startPos + 1);if (url.StartsWith("Login1.aspx"))
    if (userAgent.IndexOf("Windows CE") != -1 || userAgent.IndexOf("Pocket PC") != -1)
    HttpContext.Current.Server.Transfer("Login2.aspx");
    else if (url.StartsWith("Login2.aspx"))
    HttpContext.Current.Server.Transfer("Login1.aspx");
    ...第二种方法我忘记了pocket pc的useragent你可以设置一个断点来看看HttpContext.Current.Request.UserAgent的值来判断的..
    记得第一个方法得在References中加入System.Web.Mobile.dll
      

  9.   

    to flyingknight(玫瑰骑士) :
    因为是 登录叶面,这样:
    if (currentCapabilities.IsMobileDevice)
    HttpContext.Current.Server.Transfer("Login2.aspx", true);
    else
    HttpContext.Current.Server.Transfer("Login1.aspx", true);
    ...用Transfer,因为用户还为登陆,除了登陆页面login.aspx,其他的页面,应该都是不可访问的哦。包括login1.aspx和login2.aspx
      

  10.   

    这个可以先获取Request.URL,并做部分匹配来判断是否登陆页面,如果不是,则不作处理...
      

  11.   

    这里只是做出个范例,告诉你可以用这些方法来处理,比如你可以在HttpModule/HttpHandler里面来判断,或者仅仅在login1.aspx/login2.aspx里面来判断...比如用HttpHandler
    可以在web.config里面用
    <httpHandlers>
    <add verb="*" path="login*" type="AspNetForums.Components.HttpHandler.LoginHttpHandler, AspNetSite" />
    </httpHandlers>
    或者直接在上面的代码中加入
    String url = HttpContext.Current.Request.Path;
    int startPos = url.IndexOf("/");
    if (startPos == -1)
    startPos = 0;
    url = url.Substring(startPos + 1).ToLower();
    if (url.StartsWith("login"))
    {
    // 上面的检测设备类型或者UserAgent的代码....
    }
    // 如果不是登录页面则离开
      

  12.   

    得到客户端的信息是Request的ServerVariables集合里,不过我不知道pc机的ie是否与pocketpcie一样的名称。但有一点肯定web.config文件是不能够作判断的,你只能在程序里做判断。web.config是存放一些配置设置和自定义设置的数据的地方。
      

  13.   

    事实上大多数浏览器的UserAgent的filter在machine.config下面都有了,其中也包括ie/ netscape/也有Internet Mobile Explorer,你可以去看看里面的内容,在我机器上的位置是C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config
    你也可以写自己设备的filter在web.config中...如果machine.config里面没有包含你需要的设备!