C# 从控制器连接到web服务时发生ASP.NET MVC-401错误
我试图对一个“web服务”进行跨域调用(我这么说是因为它只是一个基于查询字符串值返回XML的站点),但运气不好。每次提出请求时,我都会收到一个C# 从控制器连接到web服务时发生ASP.NET MVC-401错误,c#,asp.net-mvc,asp.net-mvc-3,web-services,cross-domain,C#,Asp.net Mvc,Asp.net Mvc 3,Web Services,Cross Domain,我试图对一个“web服务”进行跨域调用(我这么说是因为它只是一个基于查询字符串值返回XML的站点),但运气不好。每次提出请求时,我都会收到一个(401)Unauthorized错误。但是,我可以将链接放在浏览器中,并更改查询字符串以获得结果,这样我就可以从计算机访问该站点。下面是我试图使用的代码,有人能提供任何建议吗 对web服务的调用源于对页面视图的Ajax调用。该代码粘贴在下面: function GetProgramDetails() { var searchItem = $('.
(401)Unauthorized
错误。但是,我可以将链接放在浏览器中,并更改查询字符串以获得结果,这样我就可以从计算机访问该站点。下面是我试图使用的代码,有人能提供任何建议吗
对web服务的调用源于对页面视图的Ajax调用。该代码粘贴在下面:
function GetProgramDetails() {
var searchItem = $('.searchbox').val();
var request = $.ajax({
type: 'POST',
url: '@Url.Action("compSearch", "Home")',
data:
{
searchFilter: searchItem,
url: location.protocol + '//' + location.host
},
dataType: 'html',
success: function (data) {
console.log(data);
alert(data);
},
error: function (data) {
console.log(data);
alert("Unable to process your resquest at this time.");
}
});
}
这将调用以下视图的控制器:
[HttpPost]
public string compSearch(string searchFilter, string url)
{
string results = string.Empty;
string URL =
"http://quahildy01/xRMDRMA02/xrmservices/2011/OrganizationData.svc/AccountSet?$select=AccountId,Name,neu_UniqueId&$filter=startswith(Name,'" +
searchFilter + "')";
try
{
WebRequest myWebRequest = WebRequest.Create(URL);
myWebRequest.Headers.Add("Access-Control-Allow-Origin", url);
WebResponse myWebResponse = myWebRequest.GetResponse();
Stream myFileStreamResult = myWebResponse.GetResponseStream();
Encoding encoder = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(myFileStreamResult, encoder);
results = readStream.ReadToEnd();
}
catch (Exception ex)
{
results = ex.InnerException.ToString();
}
return results;
}
:-只是好奇,你没有使用任何[Authorize]关键字,对吗?