我有一个控制台应用程序,它发送一个XML到MVC应用程序并接收另一个XML作为响应。它运行良好,但是我希望添加授权(出于显而易见的原因)。
这是控制台应用程序的代码:
using (var wc = new WebClient())
{
return GetXmlFromBytes(
wc.UploadData("URL", GetBytesFromXml(xmlToSend))
);
}
以下是来自MVC应用程序的代码:
public ActionResult DoSomething()
{
XElement xml = XElement.Load(new System.IO.StreamReader(Request.InputStream));
var response = InsertDataFromXml(xml);
return File(GenerateFileFromResponse, "text/xml", "result.xml");
}
它能够正常工作。因此,为了实现授权,我添加了以下代码:
控制台(添加了wc.Credentials
):
using (var wc = new WebClient())
{
wc.Credentials = new NetworkCredential("user", "password");
return GetXmlFromBytes(
wc.UploadData("URL", GetBytesFromXml(xmlToSend))
);
}
MVC应用程序(添加了[Authorize]
):
[Authorize]
public ActionResult DoSomething()
{
XElement xml = XElement.Load(new System.IO.StreamReader(Request.InputStream));
var response = InsertDataFromXml(xml);
return File(GenerateFileFromResponse, "text/xml", "result.xml");
}
它不起作用。我不知道是否需要这些信息来解决问题,但是我的web.config
文件有以下内容:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
实际上,MVC应用程序发送回的文件是LogOn页面的HTML!
我需要做什么来解决这个问题?在NetworkCredentials
中是否缺少任何参数?我知道它可以用一个domain
实例化,但我不知道MVC应用程序中用户的域是什么。
并且,只是为了确保:我确认“user”和“password”是有效的。