2014-10-16 21 views
0

我的ActionHandler.ashx文件應該在進入ProcessRequest時發佈,context.Request.RequestType始終爲「GET」。提交給HttpHandler的結果是RequestType GET而不是POST

背景: 這個HttpHandler的當前工作正常(即單擊電子郵件中的鏈接將導致進入我的ActionHandler.ashx和查詢字符串被正確處理)。例如:

https://mdwdata/CorporateBrain/ActionHandler.ashx?Action=MarkComplete&ID=1024~nzmewoojgnn&CUID=13 

顯示爲圖像正下方馬克完成該鏈接的URL:

但現在我想通過在previous SO thread下面這個建議改進它:

「在電子郵件的正文中,不是發送鏈接,而是包含一個HTML表單,其中包含一個執行回發到您的服務器的按鈕。」

問題摘要:當我點擊提交按鈕,我的處理程序與動詞進入GET不是POST(因此,我有Request.Form集合中沒有訪問隱藏表單數據

這裏。是電子郵件正文的一個片段(圖片)Here is a snippet of the email body:

如果我可以通過提交將隱藏的表單變量發佈到我的處理程序,那麼我當然會刪除這些鏈接在調試器中,我驗證了表單數據並它看起來不錯我:enter image description here

我加入這行到我的web.config文件:

<add path="ActionHandler.ashx" verb="GET,POST" type="System.Web.UI.SimpleHandlerFactory" validate="true" /> 

而且,我的電子郵件客戶端雷鳥是。

什麼會導致請求是GET而不是POST?

+0

[HTML電子郵件中的表單](https://www.campaignmonitor.com/blog/post/2435/how-forms-perform-in-html-emai/)?不確定雷鳥具體,但從回來(大約在2007年)適用的警告。你能在客戶端查看源代碼嗎? – EdSF 2014-10-17 01:43:01

+0

@EdSF - 是的,我也有點不確定。只需按照原始帖子中前面提到的上一個SO線程的建議。這種方法需要適用於所有的電子郵件客戶端。我沒有看到在Thunderbird客戶端中「查看源代碼」的方法。我會仔細研究你提供的鏈接(似乎與上面提到的建議相矛盾)。我在想,「概念」是好的,也許我只是缺少一些特殊的web.config條目等。 – 2014-10-17 14:50:52

回答

0

這個問題的簡短答案是Thunderbird不會POST到HTML窗體標記的Action屬性中的URL。即使最新版本的Thunderbird(版本31.2.0)「忽略」POST並通過GET請求URL。

HTML表單的建設做得好和其他電子郵件客戶端我已經測試做工精細:

  • 的Microsoft Office 365 Outlook Web App的
  • 谷歌Gmail

所以,我想我這樣做是「正確的」,但一些電子郵件客戶端顯然不支持這個(甚至我最喜歡的是Thunderbird)。

+0

有趣。面對這種情況,我可能會在電子郵件中包含一些關於「如果您的電子郵件客戶端不支持表單,請點擊此處訪問該網站」的文字。或類似的東西。 – NotMe 2014-10-17 20:10:28