none
XBAP启动URL过长的问题 RRS feed

  • 问题

  • 在XBAP程序的URL里加启动参数的时候,如果URL的长度超过260个字符,会出现以下的现象。

    1.将URL粘贴的IE地址栏,回车。程序正常启动。
    2.按Ctrl+N开启新页面。新页面加载过程中IE异常结束。通常情况下,新页面中应该打开原来的URL。

    环境:Windows XP + IE7 + .Net 3.5

    在相同环境下,用非XBAP确认过,没有发生该问题。所以基本可以排除IE的问题。

    谢谢!

    2012年2月8日 6:09

答案

  • 以下是MSDN订阅服务的回答,供参考。

    在 PresentationHost.exe 内部,把当前页面的URL作为历史记录保存的时候,有URL字符串长度检测的处理。
    但是,该处理是以URL字符串的长度不会超过MAX_PATH为前提的。
    所以,当URL大于260个字符的时候,保存历史记录的处理会出错,结果出现异常退出的现象。

    • 已标记为答案 Raymond.S 2012年4月24日 3:27
    2012年4月24日 3:26

全部回复

  • 操作系统中文件路经超过260个字符是有问题的,http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx 所以使用 \\?\前缀来解决, 你测试一下。

    真正运行加载XBAP的其实并不是IE, 而是 PresentationHost.exe (http://msdn.microsoft.com/en-us/library/aa970051.aspx) 这个问题应该是发生在它里面。 你尝试测试一下在.Net 4下面的情况。最好还有在Windows 7的情况

    不过我还是建议你不要把URL弄得太长。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us


    2012年2月8日 9:04
    版主
  • 根据你的回答,这应该是PresentationHost.exe无法处理超过260字符的URL吧?
    难道说IE和PresentationHost.exe之间是通过文件名来传递URL的吗?IE崩溃是因为这个吗?
    如果无法干预URL从IE传递到PresentationHost.exe的过程,那这个问题是不是就无解了?

    我的项目只能用.Net 3.5,不能使用.Net 4。而且即使在Windows 7下没问题,也不能强制用户切换到Windows 7。
    因为要通过URL传递相当多的数据,URL长度的问题也没法解决。

    多谢!

    2012年2月9日 5:50
  • URL传递大量数据本身就不是可取的方案,为什么不使用POST方式。 Win7下好的话,那你尝试升级你的IE7到8或者9测试一下。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月9日 7:33
    版主
  • 因为需要把URL放在email里,收信人直接点击URL带参数启动程序,所以只能用GET方式。

    关于IE的版本,之前也说到了,因为不能限制用户环境的版本,所以只要有一个版本NG,就等于没有解决。

    请问关于这个限制,是XBAP的已知问题吗?微软官方有没有说明?

    谢谢!

    2012年2月13日 5:41
  • 没有查到有关错误记录,只有关于URL超过260字符之后于ActiveX传递参数有错误的B,不过这个只限于IE早期版本。

    你这个问题能否提供一些比如异常信息, 调用堆栈,错误代码,甚至你可以看一些计算机管理〉事件管理里面有没有记录系统事件,描述了这个问题。

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月14日 6:59
    版主
  • 以下是MSDN订阅服务的回答,供参考。

    在 PresentationHost.exe 内部,把当前页面的URL作为历史记录保存的时候,有URL字符串长度检测的处理。
    但是,该处理是以URL字符串的长度不会超过MAX_PATH为前提的。
    所以,当URL大于260个字符的时候,保存历史记录的处理会出错,结果出现异常退出的现象。

    • 已标记为答案 Raymond.S 2012年4月24日 3:27
    2012年4月24日 3:26