我刚收到一个.aspx.cs文件......我怎么运行它?

时间:2013-11-13 16:00:06

标签: c# asp.net .net iis

我的任务是想出一种在.NET服务器上自动发送电子邮件的方法,并获得了一段代码可供使用:

using System;
using System.Net.Mail;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SendMailSample
{
    public partial class SendMailSample : System.Web.UI.Page
    {
        protected void btSendMail_Click(object sender, EventArgs e)
        {
            MailMessage mailMsg = new MailMessage();
            mailMsg.To.Add("test@example.com");
            mailMsg.From = new MailAddress("no-reply@example.com");
            //Set subject and body
            mailMsg.Subject = "[Subject]";
            mailMsg.Body = "[Body]";
            //Set mail server and port
            SmtpClient smtpClient = new SmtpClient("localhost", 25);
            SmtpClient.Send(mailMsg);
        }
   }
}

我不知道如何运行它。我安装了IIS 7(在Win7上),具有ASP.NET功能(来自添加/删除程序)。我尝试直接导航到文件(因为我已经习惯了PHP)并且遇到了404错误。我在aspx.cs文件和.config文件中添加了一个空的web.config文件和已编辑的权限以包含IUSR,我仍然收到401未经授权的错误。

运行aspx.cs文件的最快方法是什么?

编辑:只想补充说我无法访问Visual Studio。我想让.NET进程获取文件并运行它,就像PHP一样,因为这是我习惯的。

4 个答案:

答案 0 :(得分:2)

您发送的是与ASP.Net网页关联的C#源文件。您将无法直接运行它,就好像它是某种可执行或解释的脚本一样。发送给您的人假定您知道如何使用C#进行编码,并且您将参考此内容以获取有关如何使用SmtpClient类的示例。

===编辑===

由于此特定类包含带有发送邮件按钮的事件处理程序的代码隐藏,因此除了作为示例之外,它对您没有用。但是,如果您想基于此示例创建应用程序,则需要获取C#IDE(Visual Studio,SharpDevelop,Mono等),或者直接从命令行使用C#编译器。

答案 1 :(得分:2)

  

编辑:只想补充说我无法访问Visual Studio。我想让.NET进程获取文件并运行它,就像PHP一样,因为这就是我习惯的。

这不会发生。你没有使用解释语言。代码需要编译,因为这是一个带有代码的标准Web表单。您需要download the express version of Visual Studio进行Web开发,创建一个新的Web窗体项目,并将此代码移到Default.aspx

此时您只需在IDE中点击 F5 即可运行该应用程序。

答案 2 :(得分:2)

您无法运行aspx.cs文件......这是设计使然,因为必须编译扩展名为.cs的文件...

你可以做的是创建一个.aspx文件并将该方法复制到它,这样它就可以运行而不必生成一个dll ......编译仍然会发生,但它以透明的方式发生 - 你不必处理dll ...

类似(以下代码未经过测试):

<!-- directives -->
<% @Page Language="C#" %>

<%@ Import Namespace="System.Net.Mail" %>

<!-- code section -->
<script runat="server">
protected void btSendMail_Click(object sender, EventArgs e)
{
    MailMessage mailMsg = new MailMessage();
    mailMsg.To.Add("test@example.com");
    mailMsg.From = new MailAddress("no-reply@example.com");
    //Set subject and body
    mailMsg.Subject = "[Subject]";
    mailMsg.Body = "[Body]";
    //Set mail server and port
    SmtpClient smtpClient = new SmtpClient("localhost", 25);
    SmtpClient.Send(mailMsg);
}
</script>

<!-- Layout -->
<html>
<head> <title> Test </title> </head>
<body>
<h3> Test </h3>
<form runat="server">
    <input runat="server" id="button1" type="submit" 
    value="Enter..." OnServerClick="btSendMail_Click"/>
<hr />
</form>
</body>
</html>

答案 3 :(得分:0)

您获得的代码来自ASPX页面的代码隐藏。更具体地说,它是按下按钮时触发的方法。我会1)在Visual Studio中创建一个新的webform。 2)在该页面上创建一个按钮。 3)双击新按钮进入代码隐藏。 4)将您给出的代码粘贴到新的onclick中,即使是新按钮也是如此。

将此代码粘贴到新的onclick方法中:

MailMessage mailMsg = new MailMessage();
mailMsg.To.Add("test@example.com");
mailMsg.From = new MailAddress("no-reply@example.com");
//Set subject and body
mailMsg.Subject = "[Subject]";
mailMsg.Body = "[Body]";
//Set mail server and port
SmtpClient smtpClient = new SmtpClient("localhost", 25);
SmtpClient.Send(mailMsg);

修改

你可以使用AJAX,但你仍然需要丢失代码隐藏的前端部分。您可以创建一个html表单页面,并在按钮onclick事件中使用下面的JQuery。就像我说的,一定要构建你的aspx页面的前端并命名它:“YourASPXPage.aspx”

$.ajax({
  type: "POST",
  url: "YourASPXPage.aspx",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Do something 
  }
});