簡體   English   中英

如何從IIS托管的WebAPI / MVC應用程序發出外部GET請求(通過代理服務器)

[英]How to make an external GET request from IIS hosted WebAPI/MVC app (via proxy server)

我們使用Windows身份驗證 我已經創建了兩個WebAPI / MVC應用程序。

當托管在生產服務器 / IIS上時,應用程序需要憑據才能對外部站點執行HTTP GET 由於某些原因,我們暫時無法使用特殊的AD帳戶

我已經閱讀過有關ASP.NET模擬的信息 據我了解,可以合並呼叫者的憑證嗎? 盡管我不確定這是否適合與WebAPI一起使用,但我嘗試使用此代碼。

[HttpGet]
[Route("api/test")]
public HttpResponseMessage test() {
    using(var ctx = WindowsIdentity.GetCurrent().Impersonate()) {
        var proxyOptions = new WebProxy("[proxyUrl]");
            proxyOptions.UseDefaultCredentials = true;

        var client = new WebClient();
            client.UseDefaultCredentials = true;                
            client.Proxy = proxyOptions;

        return new HttpResponseMessage {
            Content = new StringContent(
                content: client.DownloadString("[externalApiUrl]"),
                encoding: Encoding.Default,
                mediaType: "text/plain"
            )
        };
    }
}

無論如何,這是行不通的。

我應該配置委派而不是模擬嗎?

如何在沒有單獨的AD帳戶的情況下執行外部請求?

您是否嘗試使用以下方式顯式設置憑據

var proxyConfig = new WebProxy(
proxyServerUrl, 
BypassOnLocal: false, 
BypassList: null, 
Credentials: new NetworkCredential(username, password)
);

用戶名/密碼應該是代理服務器上的授權用戶。 由於您使用的是Windows身份驗證,因此可能需要在用戶名Eg d​​omain \\ username中添加域名前綴

該方法應該在您提到的所有3種環境中均有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM