在本地运行时对另一个应用程序ASP.NET MVC应用程序执行POST Web请求时获取401

时间:2017-08-31 03:00:15

标签: c# cors httpwebrequest

问题标题有它的要点,但细节更多涉及。我有一个.Net 2.0 Web窗体应用程序在服务器端执行Web请求,以发送POST到.Net 4.0 ASP.NET MVC 4应用程序操作。我也尝试过使用Web API控制器。当我执行这篇文章时,我从服务器上获得了401.

在我的情况下,两个应用程序都在我的机器上本地运行在Visual Studio 2013的不同实例中(因此,使用不同的端口)。

我的目标是在MVC应用程序中处理POST信息(而不是使用Web Api控制器),并将字符串或对象作为Web响应返回到.Net 2.0 Web窗体应用程序。

我很确定这里的问题是CORS,但是如何在后端执行POST而不是通过客户端上的Ajax调用来解决这个问题呢?

编辑1 - 从后端添加Web请求代码

 Protected Sub btnPostWebRequest_Click(sender As Object, e As EventArgs) Handles btnPostWebRequest.Click
    'Dim url As String = "http://localhost:65070/api/viewgenerator"
    Dim url As String = "http://localhost:65070/PdfManagement/GenerateView"
    Dim postData As String = GetPostData(Request)
    Dim myHttpWebRequest As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
    myHttpWebRequest.Method = "POST"
    Dim data As Byte() = Encoding.ASCII.GetBytes(postData)
    myHttpWebRequest.ContentType = "application/x-www-form-urlencoded"
    myHttpWebRequest.ContentLength = data.Length
    Dim requestStream As Stream = myHttpWebRequest.GetRequestStream()
    requestStream.Write(data, 0, data.Length)
    requestStream.Close()
    Dim myHttpWebResponse As HttpWebResponse = DirectCast(myHttpWebRequest.GetResponse(), HttpWebResponse)
    Dim responseStream As Stream = myHttpWebResponse.GetResponseStream()
    Dim myStreamReader As New StreamReader(responseStream, Encoding.[Default])
    Dim pageContent As String = myStreamReader.ReadToEnd()
    myStreamReader.Close()
    responseStream.Close()
    myHttpWebResponse.Close()
  End Sub

正在发布的ASP.NET MVC应用程序中的操作类似于下面的代码。它基本上是空的。我只是想验证我是否首先从POSTING应用程序获取数据。

[HttpPost]
public string GenerateView(string postData)
{
  return "";
}

当单步执行POST的应用程序时,它在此行上出错:

Dim myHttpWebResponse As HttpWebResponse = DirectCast(myHttpWebRequest.GetResponse(), HttpWebResponse)

在Fiddler2启动并运行的情况下,我甚至没有看到ASP.NET MVC应用程序的帖子。我看到的错误是:

  

远程服务器返回错误:(401)未经授权。

0 个答案:

没有答案