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 アプリケーションのユーザーのドメインが何であるかはわかりません。
そして、確認のために、「ユーザー」と「パスワード」が有効であることを確認しました。