2012-06-10 37 views
0

在我的項目中,我使用庫DotNetOpenAuth中的OpenIdProviderWebForms和OpenIdRelyingPartyWebForms。DotNetOpenId「登錄失敗」。登錄中的字符

驗證是通過用戶對域服務器的請求完成的。

登錄我的用戶的格式爲test_dm \用戶名[email protected]

授權的供應商是成功的,但是當openid.GetResponse();我收到錯誤「登錄失敗(發送直接消息或獲取響應時發生錯誤)」。

正如我發現的,由於字符而出現問題。/!(我用\!替換\)在用戶名中。

對不起,我的英文。

回答

0

OpenID從不在兩個網站之間傳輸用戶名。什麼代碼(大概是你的網絡應用程序)負責將用戶名放在URL中?我建議您在將URL放入URL之前使用Uri.EscapeDataString來轉義用戶名。

+0

在這種情況下使用'Uri.EscapeDataString'不會導致問題(因爲它不會取代它)。 隨着反斜槓不同的情況 - 它被替換,但是當你創建一個Uri轉義序列被替換爲一個斜槓,並且我有LocalIdentifier像以前那樣覆蓋這些數據。 '公共靜態標識BuildIdentityUrl(用戶名字符串){ \t返回新的URI(HttpContext.Current.Request.Url,HttpContext.Current.Response.ApplyAppPathModifier( 「〜/ user.aspx /」 + Uri.EscapeDataString(用戶名)) ); }' – ABSENT