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