C# Windows服务调用WebGet方法返回400错误
我有一个服务,它运行一个c#方法,以指定的时间间隔将数据库与active directory同步。此代码已在测试环境中运行,现在将其放在另一台服务器上,它将返回以下消息: 服务器在处理请求时遇到错误。请看 服务帮助页,用于构造对服务的有效请求 帮助页面如下所示: 但是“SyncActiveDirectory”URI给了我以下错误: 这是一台新服务器。可能我缺少一些需要安装的东西或IIS中的设置?任何帮助都将不胜感激 编辑: 以下是调用webget的方法:C# Windows服务调用WebGet方法返回400错误,c#,C#,我有一个服务,它运行一个c#方法,以指定的时间间隔将数据库与active directory同步。此代码已在测试环境中运行,现在将其放在另一台服务器上,它将返回以下消息: 服务器在处理请求时遇到错误。请看 服务帮助页,用于构造对服务的有效请求 帮助页面如下所示: 但是“SyncActiveDirectory”URI给了我以下错误: 这是一台新服务器。可能我缺少一些需要安装的东西或IIS中的设置?任何帮助都将不胜感激 编辑: 以下是调用webget的方法: private void SyncA
private void SyncActiveDirectoryServiceCall()
{
WriteIntoLogFile("Start _schedulerService.SyncActiveDirectoryServiceCall()");
try
{
var reader = new AppSettingsReader();
var serviceurl = reader.GetValue("ServiceUrl", typeof(string));
var client = new RestSharp.RestClient(serviceurl.ToString());
var request = new RestSharp.RestRequest("SyncActiveDirectory", RestSharp.Method.GET);
var response = client.Execute(request);
WriteIntoLogFile(response.Content);
}
catch (WebException ex)
{
using (WebResponse response = ex.Response)
{
HttpWebResponse httpResponse = (HttpWebResponse)response;
WriteIntoLogFile("Error code: " + httpResponse.StatusCode);
using (Stream data = response.GetResponseStream())
using (var reader = new StreamReader(data))
{
string text = reader.ReadToEnd();
WriteIntoLogFile("STREAMED: " + text);
}
}
WriteIntoLogFile("TRY-CATCH: " + ex.ToString());
}
WriteIntoLogFile("End _schedulerService.SyncActiveDirectoryServiceCall()");
}
下面是调用的方法:
namespace SyncActiveDirectory
{
public class SyncLocalWithLDAP : ISyncLocalWithLDAP
{
private List<GenericUser> users { get; set; }
private List<GenericUser> roles { get; set; }
[WebGet(UriTemplate = "SyncActiveDirectory")]
public void SyncActiveDirectory()
{
string constr = GetConnectionStringValue("ProteusMMXCustomerDB");
string usr = GetAppsettingValue("ldap_login_username");
string pss = GetAppsettingValue("ldap_login_password");
string filePath = string.Empty;
ActiveDirectoryWrapper wrapper = new ActiveDirectoryWrapper();
if (!Directory.Exists(WebConfigurationManager.AppSettings["LogFolderPath"] + "ServiceLog"))
{
Directory.CreateDirectory(WebConfigurationManager.AppSettings["LogFolderPath"] + "ServiceLog");
}
if (!File.Exists(WebConfigurationManager.AppSettings["LogFolderPath"] + "ServiceLog" + "/" + "SyncLog.txt"))
{
File.Create(WebConfigurationManager.AppSettings["LogFolderPath"] + "ServiceLog" + "/" + "SyncLog.txt").Dispose();
}
filePath = WebConfigurationManager.AppSettings["LogFolderPath"] + "ServiceLog" + @"\" + "SyncLog.txt";
using (StreamWriter w = File.AppendText(filePath))
{
Log("Constr - " + constr + " , u - " + usr + " p - " + pss, w);
try
{
Log("Start sync outer", w);
SyncLocalWithLDAP_Users_Roles(constr, usr, pss, w);
Log("End sync outer", w);
}
catch (Exception ex)
{
Log("Error: " + ex.Message, w);
}
}
}
命名空间同步ActiveDirectory
{
公共类SyncLocalWithLDAP:ISyncLocalWithLDAP
{
私有列表用户{get;set;}
私有列表角色{get;set;}
[WebGet(UriTemplate=“SyncActiveDirectory”)]
public void SyncActiveDirectory()
{
字符串constr=GetConnectionStringValue(“ProteusMMXCustomerDB”);
字符串usr=GetAppsettingValue(“ldap_登录_用户名”);
字符串pss=GetAppsettingValue(“ldap_登录_密码”);
string filePath=string.Empty;
ActiveDirectoryWrapper=新的ActiveDirectoryWrapper();
如果(!Directory.Exists(WebConfiguration Manager.AppSettings[“LogFolderPath”]+“ServiceLog”))
{
CreateDirectory(WebConfiguration Manager.AppSettings[“LogFolderPath”]+“ServiceLog”);
}
如果(!File.Exists)(WebConfiguration Manager.AppSettings[“LogFolderPath”]+“ServiceLog”+“/”+“SyncLog.txt”))
{
File.Create(WebConfiguration Manager.AppSettings[“LogFolderPath”]+“ServiceLog”+“/”+“SyncLog.txt”).Dispose();
}
filePath=WebConfiguration Manager.AppSettings[“LogFolderPath”]+“ServiceLog”+@“\”+“SyncLog.txt”;
使用(StreamWriter w=File.AppendText(filePath))
{
对数(“Constr-”+Constr+”,u-“+usr+”p-“+pss,w);
尝试
{
日志(“启动同步外部”,w);
同步本地与LDAP用户角色(CONTR、usr、pss、w);
日志(“结束同步外部”,w);
}
捕获(例外情况除外)
{
日志(“错误:+ex.消息,w);
}
}
}
编辑:
添加到该目录的htm文件的图片。
编辑:
如果这有帮助,下面是Chrome开发者工具标题:
你能分享SyncActiveDirectory运行的代码吗?它对广告服务器有什么要求?用更多代码编辑帖子。在安装服务的目录中添加一个文件,IIS将其作为一个网站,如helloworld.htm。你能浏览到该文件吗?我尝试了你的建议,在网站中添加了一个.htm文件,我可以浏览该文件。将该文件的图片添加到post.any ideas@petryuno1?你能共享SyncActiveDirectory运行的代码吗?它对广告服务器有什么要求?用更多代码编辑post。向安装该服务的目录添加一个文件,IIS将其作为网站,如helloworld.htm。你能浏览到该文件吗?我尝试了你的建议,并在网站上添加了一个.htm文件,我可以浏览该文件。在帖子中添加了该文件的图片。有什么想法@petryuno1?