我在一個類庫項目下面的代碼(該網址已被簡化,但它仍然表明了同樣的行爲):的System.Uri類:在Azure的不同逃逸行爲對.Net框架
Uri oUri = new Uri("https://xzyserver.com/MyFolder%2FMyPage?querystring");
我發現System.Uri類在Azure工作者角色中以不同的方式在本地以不同的方式回顧我的Url。
如果在一個桌面應用程序oUri.AbsoluteUri返回不同的值,在Azure中,跑步(無論是在計算仿真和生產輔助角色)類庫運行:
本地= MyFolder文件%2FMyPage查詢字符串
InAzure = MyFolder中/我的頁面?查詢字符串
(我不得不刪除網址開始在上面的兩行,因爲堆棧溢出告訴我有在我的崗位太多的鏈接)
本地行爲就是我所需要的(作爲第三方認證過程的一部分,安全令牌是根據請求Uri和請求主體的其他部分來計算的,因此這種無用的操作會打破該過程)。 Uri與System.Net.Http名稱空間中的類一起使用。
我試圖Uri構造函數(蘇里,bDontEscape)的過時形式,但這並沒有任何區別。
此外,行爲似乎矛盾 - 我也試過如下:
Uri oUri = new Uri("https://xzyserver.com/MyFolder%252FMyPage?querystring");
然而,僅轉義似乎適用於%2F爲「/」時,25%沒有反轉義回到「 %「,而不是oUri.AbsoluteUri返回完整的原始網址,沒有無法解析。
這是一個已知的/記錄的問題?任何簡單的解決辦法,我可能錯過了?
PS。 System.Net.Http命名空間中的類在其構造函數的許多構造函數中使用Uri對象或Uri字符串,但同樣的問題適用於兩者。我期望這些類僅僅是爲基於字符串的重載創建一個Uri。
無效表單出現在哪裏?訪問uri的屬性時會看到這個嗎?或者這是在網絡服務器的請求中看到的?要麼...?但是,是的,'Uri'和IIS都有一些奇怪的故事可以說明它的逃跑 - 它已經咬了我幾次(和:它最近也改變了)(http://meta.stackexchange.com/questions/ 203116 /錯誤返回-URP登錄後/ 203126#203126)) –
訪問幾乎所有的Uri對象的屬性時看到錯誤的形式(例如AbsolutePath,PathAndQuery,AbsolutePath等),它也是由System.Net.Http.HttpClient發送的任何System.Net.Http.HttpRequestMessages中發送的Uri的形式,通過在Fiddler中查看傳出請求進行確認。最初我懷疑HttpClient,etc類,但是上面的例子表明這是Uri類(它被HttpClient使用)的一個更基本的問題。 – cbailiss
請告訴我們我們正在討論哪些.NET版本以及Azure SDK的哪些版本。 –