ASP.NET MVC - 401从控制器连接到Web服务时出错

时间:2013-03-21 17:30:27

标签: c# asp.net-mvc asp.net-mvc-3 web-services cross-domain

我正在尝试对“Web服务”进行跨域调用(我说这是因为它只是一个基于查询字符串值返回XML的站点)但没有运气。每次我发出请求时都会收到(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;
    }

0 个答案:

没有答案