我从ASP.NET 4.0 Webforms应用程序调用基于REST的服务API。
REST服务需要HTTP Basic Auth,到目前为止一直运行良好。我正在使用此代码段来定义我的HttpWebRequest
对象的凭据(serviceUsername
,serviceUserPassword
和serviceUrl
是传入的字符串):
NetworkCredential credentials = new NetworkCredential(serviceUsername, serviceUserPassword);
HttpWebRequest httpReq = WebRequest.Create(serviceUrl) as HttpWebRequest;
httpReq.Credentials = credentials;
httpReq.Method = "GET";
httpReq.Accept = "application/json";
然后我解雇了我的请求。
今天,突然之间,对于一个客户来说,事情变得混乱了。似乎没有任何东西可以工作 - 我的所有调用都被HTTP 401 - Unauthorized
拒绝了 - 即使使用相同的URL和凭据,我也可以从Fiddler调用这个REST API。
最终的原因是密码中有£
个字符......
所以Fiddler似乎已经以某种方式优雅地处理了这个问题 - 而ASP.NET却嗤之以鼻。即使我的客户决定在他们的(可能是机器生成的)密码中放入一个英镑符号,我还需要做多少步骤才能使ASP.NET 4.0 也正常工作?任何技巧或方法来处理这个?