我有一个发送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应用程序发回的文件是登录页面的HTML!
我有什么做的,解决这个问题? 在任何参数中缺少NetworkCredentials
? 我知道它可以用一个实例化domain
,但我不知道什么是在MVC应用程序的用户的域。
而且,只是为了确保我放心“用户”和“密码”是有效的。