访问串行端口需要什么ASP.NET权限?

时间:2011-04-28 14:34:20

标签: .net asp.net serialization permissions serial-port

我正在使用asp.net应用程序,我希望它通过串口与arduino板通信。我创建了一个可以执行此操作的Windows应用程序,但是当我在我的asp.net应用程序上使用相同的代码时,我得到一个异常,说“访问端口COM7被拒绝”。现在我一直在网上冲浪寻找答案,我遇到了一个论坛,他们正在谈论通过使用模拟授予asp.net权限。我是使用.net框架和串口的新手。如果有人可以提供帮助,请发布或者发布可能有帮助的链接。

提前完成。

3 个答案:

答案 0 :(得分:2)

ASP.net使用您计算机上的特定用户帐户。就像您登录的主帐户一样。该用户帐户无权对硬件执行任何操作。

要在ASP.net中模拟其他帐户,请执行以下操作:

创建一个具有Web用户所有相同权限的帐户,然后在web.config文件中在配置标记之间添加以下代码

<identity impersonate="true" userName="somedomain\newUser" password="newUsersPassword" />

答案 1 :(得分:1)

我猜你正在使用SerialPort课程进行这种沟通。它的文档说明

  

<强>性SecurityPermission
  能够调用非托管代码。关联枚举:UnmanagedCode

Some more MSDN documentation about ASP.NET and security

  

如果您的应用程序调用非托管代码,则必须以完全信任方式运行。即使是限制性最小的部分信任级别High,也不允许调用非托管代码。

You can configure the ASP.NET application's trust level like so.

Wrapping Privileged Code部分提供了一种解决方法,可以完全信任您的整个应用程序(可能存在安全风险)。

答案 2 :(得分:-1)

尝试在串行端口阻止命令上打开连接并关闭连接。 实施例

 SerialPort COM = new System.IO.Ports.SerialPort("COM14");
protected void btnRele1_Click(object sender, EventArgs e)
{
    COM.Open();
    if (btnRele1.BackColor != Color.Green)
    {
        COM.WriteLine("1");
        btnRele1.BackColor = Color.Green;
        btnRele1.ForeColor = Color.White;
        btnRele1.Text = "Rele 1 - ON";
    }
    else
    {
        COM.WriteLine("2");
        btnRele1.BackColor = Color.LightGray;
        btnRele1.ForeColor = Color.Black;
        btnRele1.Text = "Rele 1 - OFF";
    }
    txtSerial.Text = COM.ReadLine();
    COM.Close();
}