这个问题困扰了我很长时间。
我写了一个asp.net项目,并使用RestSharp发布我的请求,以授权用户是否可以login该站点。
以下是调用授权服务器的方法的代码
public static async Task<UserInfo> ValidatorResult(string userName, string passWord) { var client = new RestClient(AuthUrl.BaseUrl); var request = new RestRequest(AuthUrl.LoginURL, Method.POST); //client.Proxy = new WebProxy("127.0.0.1", 8888); request.AddParameter(InformationDefine.CLIENT_ID_ID, InformationDefine.CLIENT_ID); request.AddParameter(InformationDefine.CLIENT_SECRET_ID, InformationDefine.CLIENT_SECRET); request.AddParameter(InformationDefine.GRANT_TYPE_ID, InformationDefine.GRANT_TYPE_PASSWORD); request.AddParameter(InformationDefine.MAIL_ID, userName); request.AddParameter(InformationDefine.PASSWORD_ID, passWord); var response = await client.ExecuteTaskAsync<UserInfo>(request); return response?.Data; }
这是我的授权服务器的地址常量:
class AuthUrl { public const string BaseUrl = @"https://account.mysit.com.cn"; public const string LoginURL = @"/api/oauth/access"; }
当我在本地环境中使用这些代码时,我可以得到正确的UserInfo,但是当我将这个项目发布到IIS服务器时,当我调用这个方法时,我总是得到500个代码。
错误是“response?.Data”为空。
我想解决这个问题,我尝试了很多方法,但都失败了。
我想在IIS中得到原因,所以我添加了一个行代码
client.Proxy = new WebProxy("127.0.0.1", 8888);
当我打开提琴手时,有时我可以得到UserInfo,但是当我closures提琴手时,错误又出现了,这真是太神奇了。
你能告诉我为什么吗?
以及如何解决这个问题。
谢谢。
Ps我忘了一个细节,在IIS中,mysite的绑定域不在下面的种类“localhost”或“ip:port”中。
我有一个像“hai.xxxxx.co”的另一个主机名,我的网站地址是“hai.xxxxx.co:8088”。