C# 帮助从控制台应用程序呈现ASP.NET MVC视图

C# 帮助从控制台应用程序呈现ASP.NET MVC视图,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,我已经创建了一个ASP.NET MVC视图。在我的MVC WebApp上,它工作得很好 我想能够(从一个控制台应用程序)渲染出一个HTML电子邮件的视图。我想知道做这件事最好的方法是什么,我正在努力的部分是渲染视图 有没有办法从控制台应用程序执行此操作 webapp只需调用一个web服务并很好地格式化数据,这样控制台应用程序就可以访问相同的web服务;但是,控制器上的ActionResult受[Authorize]属性的保护,因此并非所有人都可以获得它。是的,您可以。我假设您使用的是表单身份验证

我已经创建了一个ASP.NET MVC视图。在我的MVC WebApp上,它工作得很好

我想能够(从一个控制台应用程序)渲染出一个HTML电子邮件的视图。我想知道做这件事最好的方法是什么,我正在努力的部分是渲染视图

有没有办法从控制台应用程序执行此操作


webapp只需调用一个web服务并很好地格式化数据,这样控制台应用程序就可以访问相同的web服务;但是,控制器上的ActionResult受[Authorize]属性的保护,因此并非所有人都可以获得它。

是的,您可以。我假设您使用的是表单身份验证。只需进行身份验证,获取会话头cookie并将其复制到新的web请求中

我最终使用了HttpWebRequest和此处提供的信息:

从文章中:

    // first, request the login form to get the viewstate value
    HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;         
    StreamReader responseReader = new StreamReader(
         webRequest.GetResponse().GetResponseStream()
      );
    string responseData = responseReader.ReadToEnd();         
    responseReader.Close();

    // extract the viewstate value and build out POST data
    string viewState = ExtractViewState(responseData);       
    string postData = 
         String.Format(
            "__VIEWSTATE={0}&UsernameTextBox={1}&PasswordTextBox={2}&LoginButton=Login",
            viewState, USERNAME, PASSWORD
         );

    // have a cookie container ready to receive the forms auth cookie
    CookieContainer cookies = new CookieContainer();

    // now post to the login form
    webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
    webRequest.Method = "POST";
    webRequest.ContentType = "application/x-www-form-urlencoded";
    webRequest.CookieContainer = cookies;        

    // write the form values into the request message
    StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream());
    requestWriter.Write(postData);
    requestWriter.Close();

    // we don't need the contents of the response, just the cookie it issues
    webRequest.GetResponse().Close();

    // now we can send out cookie along with a request for the protected page
    webRequest = WebRequest.Create(SECRET_PAGE_URL) as HttpWebRequest;
    webRequest.CookieContainer = cookies;
    responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());

    // and read the response
    responseData = responseReader.ReadToEnd();
    responseReader.Close();

    Response.Write(responseData); 

挑战是呈现还是授权?或者——如果我必须使用WebRequest,那么授权将是我的问题,因为我不能只发送凭据,可以吗?如果有更轻松的方式,比如添加对我的mvc应用程序的引用,那么渲染将是一个问题。长话短说,我不知道从哪里开始。我以前从未做过这件事,有什么资源可以做吗?我是否只需在我的WebRequest类中添加
NetworkCredentials
?仅当您使用Windows身份验证时。我使用的是表单身份验证。ActionResult上有一个简单的[授权]属性…让我回家,我会给你回复的