2012-05-11 62 views
2

在我的網頁中,我向WCF服務發出Ajax請求。如果該服務拋出一個錯誤,那麼它將返回到JSON中。 JavaScript錯誤處理程序然後顯示一個隱藏的div,其中包含預填充了我的詳細信息的mailto URL,以便團隊成員(這是一個小型的內部應用程序)可以向我發送包括堆棧跟蹤在內的錯誤。這裏是一個測試運行結果URL的例子:mailto網址的最大實際長度是多少?

mailto:[email protected]?subject=potential%20seed%20save%20failed&body=Potential%20seed%20URL%20=%20unknown%0DResponse%20%3A%20%7B%22ExceptionDetail%22%3A%7B%22HelpLink%22%3Anull%2C%22InnerException%22%3Anull%2C%22Message%22%3A%22testing%22%2C%22StackTrace%22%3A%22%20%20%20at%20SavePotentialSeedSearches.WCFService.StorePotentialSeed(String%20url%2C%20String%20name)%20in%20C%3A%5C%5CTFS%5C%5CProjects%5C%5CSeeds%5C%5CPreliminaries%5C%5CSavePotentialSeedSearches%5C%5CWCFService.svc.cs%3Aline%2021%5Cu000d%5Cu000a%20%20%20at%20SyncInvokeStorePotentialSeed(Object%20%2C%20Object%5B%5D%20%2C%20Object%5B%5D%20)%5Cu000d%5Cu000a%20%20%20at%20System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object%20instance%2C%20Object%5B%5D%20inputs%2C%20Object%5B%5D%26%20outputs)%5Cu000d%5Cu000a%20%20%20at%20System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc%26%20rpc)%5Cu000d%5Cu000a%20%20%20at%20System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc%26%20rpc)%5Cu000d%5Cu000a%20%20%20at%20System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc%26%20rpc)%5Cu000d%5Cu000a%20%20%20at%20System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean%20isOperationContextSet)%22%2C%22Type%22%3A%22System.ArgumentException%22%7D%2C%22ExceptionType%22%3A%22System.ArgumentException%22%2C%22Message%22%3A%22testing%22%2C%22StackTrace%22%3A%22%20%20%20at%20SavePotentialSeedSearches.WCFService.StorePotentialSeed(String%20url%2C%20String%20name)%20in%20C%3A%5C%5CTFS%5C%5CProjects%5C%5CSeeds%5C%5CPreliminaries%5C%5CSavePotentialSeedSearches%5C%5CWCFService.svc.cs%3Aline%2021%5Cu000d%5Cu000a%20%20%20at%20SyncInvokeStorePotentialSeed(Object%20%2C%20Object%5B%5D%20%2C%20Object%5B%5D%20)%5Cu000d%5Cu000a%20%20%20at%20System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object%20instance%2C%20Object%5B%5D%20inputs%2C%20Object%5B%5D%26%20outputs)%5Cu000d%5Cu000a%20%20%20at%20System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc%26%20rpc)%5Cu000d%5Cu000a%20%20%20at%20System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc%26%20rpc)%5Cu000d%5Cu000a%20%20%20at%20System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc%26%20rpc)%5Cu000d%5Cu000a%20%20%20at%20System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean%20isOperationContextSet)%22%7D 

這是2354個字符長。

Other answers表明2000個字符以上的URL是一個壞主意,因爲一些瀏覽器可能會與他們鬥爭。但是,瀏覽器以任何方式解析mailto URL,還是立即將它們交給默認郵件工具?如果他們被交易,是否有人有關於各種郵件工具(特別是Outlook)可以處理的mailto URL長度的數據?

+3

檢查這個http://forums.asp.net/t/1413986.aspx/1 –

+0

這是一個有趣的鏈接 - 命令行限制是我沒有考慮過的事情(雖然後XP它們被給予8191)。 – dumbledad

回答

3

如前所述here - 是的,瀏覽器將其發送 前解析URL - Safari瀏覽器和郵件客戶端沒有硬性限制(取決於可用的CPU和RAM上)

2015年的Web瀏覽器測試:

  • Safari瀏覽器
    • 7.05億
    • 2分鐘
    • Mozilla/5.0(Macintosh;英特爾的Mac OS X 10_10_5)爲AppleWebKit/601.1.56(KHTML,例如Gecko)版本/ 9.0的Safari/601.1.56
    • 限於由16GB RAM
  • 火狐
    • 20秒
    • 的Mozilla/5.0(Macintosh上;英特爾的Mac OS X 10.10; RV:41.0)壁虎/ 20100101火狐/ 41.0
    • 由最大字符串長度的限制
    • 1秒
    • 的Mozilla/5.0(Macintosh上;英特爾的Mac OS X 10_10_5)爲AppleWebKit/537.36(KHTML,例如Gecko)鉻/ 45.0.2454.101 Safari瀏覽器/ 537.36
    • 有限而不解釋
  • IE
    • 5秒
    • Mozilla/5.0(Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11。0)像壁虎
    • 限制,在沒有解釋

2015年電子郵件客戶端測試:

  • Mozilla Thunderbird中
    • 2097132作品在1秒內
    • 268435455使用100 %CPU 2分鐘,但無法呈現體內並且不是可用
    • 版本38.3.0
  • SeaMonkey的
    • 2097132作品在5秒內
    • 268435455使用100%的CPU時間長(超過5分鐘)
    • 版本2.38
  • 蘋果郵件
    • 500000件作品在14秒之
    • 2097132使用100%的CPU時間長(超過5分鐘)
    • 版本8.2
  • Microsoft Outlook的
    • 修剪至2070在1秒內
    • 版本2013
相關問題