Cómo autenticarse en una aplicación MVC de ASP.NET desde una aplicación de consola
Tengo una aplicación de consola que envía un XML a una aplicación MVC y recibo otro XML como respuesta. Funciona perfectamente, pero quiero agregar autorización (por razones obvias).
Aquí está el código de la aplicación de consola:
<code>using (var wc = new WebClient()) { return GetXmlFromBytes( wc.UploadData("URL", GetBytesFromXml(xmlToSend)) ); } </code>
Y aquí está el código de la aplicación MVC:
<code>public ActionResult DoSomething() { XElement xml = XElement.Load(new System.IO.StreamReader(Request.InputStream)); var response = InsertDataFromXml(xml); return File(GenerateFileFromResponse, "text/xml", "result.xml"); } </code>
Y funciona. Entonces, para implementar la autorización, agregué el siguiente código:
Consola (añadida lawc.Credentials
):
<code>using (var wc = new WebClient()) { wc.Credentials = new NetworkCredential("user", "password"); return GetXmlFromBytes( wc.UploadData("URL", GetBytesFromXml(xmlToSend)) ); } </code>
Aplicación MVC (añadida la[Authorize]
):
<code>[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"); } </code>
Y no funciona. No sé si esta información es necesaria para resolver esto, pero miweb.config
tiene el siguiente artículo:
<code><authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" /> </authentication> </code>
De hecho, el archivo que devuelve la aplicación MVC es el HTML de la página de inicio de sesión.
¿Qué tengo que hacer para resolver esto? ¿Falta algún parámetro en elNetworkCredentials
? Sé que puede ser instanciado con unadomain
, pero no sé cuál es el dominio de los usuarios en la aplicación MVC.
Y, solo para asegurarnos: me aseguré de que "usuario" y "contraseña" son válidos.