3

私のWebページで、WCFサービスにAjaxリクエストを送信します。サービスがエラーをスローした場合、それはJSONで返されます。次に、JavaScriptエラーハンドラーは、チームメンバー(これは小さな内部アプリです)がスタックトレースを含むエラーを送信できるように、私の詳細が事前に入力されたmailtoURLで非表示のdivを明らかにします。テスト実行の結果のURLの例を次に示します。

mailto:tttttttt@mmmmmmmmm.com?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文字の長さです。

他の回答は、2000文字を超えるURLは、一部のブラウザがそれらに苦労する可能性があるため、悪い考えであることを示唆しています。しかし、mailto URLはブラウザによって何らかの方法で解析されますか、それともデフォルトのメールツールにすぐに渡されますか?それらが渡された場合、さまざまなメールツール(特にOutlook)が処理できるmailto URLの長さに関するデータを誰かが持っていますか?

4

1 に答える 1

6

ここに記載されているように -はい、ブラウザはURLを送信する前に解析します-Safariとほとんどの電子メールクライアントにはハード制限がありません(使用可能なCPUとRAMによって異なります)

2015 Webブラウザテスト:

  • サファリ
    • 705000000
    • 2分
    • Mozilla / 5.0(Macintosh; Intel Mac OS X 10_10_5)AppleWebKit / 601.1.56(KHTML、Geckoなど)バージョン/9.0Safari/601.1.56
    • 16GBのRAMによる制限
  • Firefox
    • 268435455
    • 20秒
    • Mozilla / 5.0(Macintosh; Intel Mac OS X 10.10; rv:41.0)Gecko / 20100101 Firefox / 41.0
    • 文字列の最大長によって制限されます
  • クロム
    • 2097132
    • 1秒
    • Mozilla / 5.0(Macintosh; Intel Mac OS X 10_10_5)AppleWebKit / 537.36(KHTML、Geckoなど)Chrome / 45.0.2454.101 Safari / 537.36
    • 説明なしで制限
  • IE
    • 2029年
    • 5秒
    • Geckoのような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
  • 海猿
    • 2097132は5秒で動作します
    • 268435455は100%CPUを長時間(5分以上)使用します
    • バージョン2.38
  • アップルメール
    • 500000は14秒で動作します
    • 2097132は100%CPUを長時間(5分以上)使用します
    • バージョン8.2
  • Microsoft Outlook
    • 1秒で2070にトリム
    • バージョン2013
于 2015-10-09T14:56:16.850 に答える