2011-01-20 58 views
2

我正在寫一個IHttpHandler的實現,將收到通過從其他網站一個普通的HTTP POST發送XML數據。 這裏有一個原型的執行情況:通過HTTP POST發送XML數據的IHttpHandler導致HttpRequestValidationException

public class MyHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     string s = context.Request.Form["input"]; // <== this throws HttpRequestValidationException 
     XmlDocument doc = new XmlDocument(); 
     doc.LoadXml(s); 
     // ... 
    } 

    public bool IsReusable 
    { 
     get { return false; } 
    } 
} 

我用這個簡單的頁面測試執行:

<body> 
    <form method="post" action="MPSConnector.Results.dsvc"> 
     <textarea name="input"></textarea> 
     <input type="submit" value="Go!" /> 
    </form> 
</body> 

的問題是,當我嘗試閱讀張貼的「輸入」值數據,如果它包含一個xml字符串,我得到的只是一個HttpRequestValidationException。 我試圖在web.config中使用

<pages validateRequest="false"> 

,和使驗證=「假」,在處理程序聲明屬性在httpHandles部分,沒有結果。

我如何讀取XML貼在我的處理程序? (請注意,我必須使用IHttpHandler完成此任務)。

編輯:框架版本:4.0,IIS 7.x

謝謝大家! :)

回答

0

據我所知,你只需要編碼與實體XML。

我的意思是<應& LT;或> & gt,等等。

編輯:我發現這是一個重複:How can Request Validation be disabled for HttpHandlers?

試試這個! :)

+0

喜馬蒂亞斯,感謝您的回答。請注意,我無法控制處理程序將收到的數據,我發佈的頁面只是一個測試示例。我必須假定xml數據將不帶編碼,這是基於將在生產環境中發送數據的系統文檔。 – 2011-01-20 10:50:40

0

就修改這樣的web.config中:

<location path="Handlers/MyHandler.ashx"> 
     <system.web> 
     <httpRuntime requestValidationMode="2.0" /> 
     </system.web> 
    </location>