我有一個C#WCF服務接收請求消息並將其發佈到另一個服務。 發佈到其他服務是通過HttpWebRequest完成的。 如何在我的服務中獲取原始請求HTTP標頭,並將它們放入HttpWebRequest中,然後將其發佈到其他服務中。將HTTP請求/響應頭從一個調用複製到HttpWebRequest?
事情是這樣的:
HttpRequestMessageProperty httpRequestProp = GetHttpRequestProp(requestMessage);
HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(uri);
foreach (var item in httpRequestProp.Headers.AllKeys)
{
loHttp.Headers.Add(item, httpRequestProp.Headers[item]);
}
我知道這行不通,因爲HttpWebRequest的loHttp都有自己的屬性,當我嘗試用上述方法來設置的ContentType例如,因爲它需要拋出異常設置這樣的:
loHttp.ContentType = httpRequestProp.Headers[HttpRequestHeader.ContentType];
那麼,有沒有辦法HTTP請求頭從呼叫HTTP請求頭複製,並把它們作爲另一個HttpWebRequest的?原始請求也可能有其他自定義標頭設置,我想將這些也發送到其他服務。
謝謝 Adrya
我知道如何獲取標題,我不知道如何設置他們在我發佈到其他服務的HttpWebRequest ... – Adrya
正如羅伊所說,一些標題是受保護的,只能通過屬性設置。所以,你給出的循環是好的,除了你將不得不有一些特殊的條件,如果例如頭部名稱是Content-Length,你直接設置屬性而不是請求頭部 – feroze
@Roy,請您提供了您列出的「受限制」標題列表的來源 - 它是否在RFP中? –