【问题标题】:What ASP.NET permissions do I need to access a serial port?访问串行端口需要哪些 ASP.NET 权限?
【发布时间】:2011-08-14 18:51:17
【问题描述】:
我正在开发一个 asp.net 应用程序,我希望它通过串行端口与 arduino 板通信。我创建了一个可以做到这一点的 Windows 应用程序并且它工作,但是当我在我的 asp.net 应用程序上使用相同的代码时,我得到一个异常,说“访问端口 COM7 被拒绝”。现在我一直在网上寻找答案,我遇到了一个论坛,他们正在讨论通过使用模拟授予 asp.net 的权限。我对使用 .net 框架和串行端口非常陌生。如果有人可以提供帮助,请做或发布可能有帮助的链接。
提前感谢。
【问题讨论】:
标签:
.net
asp.net
serialization
permissions
serial-port
【解决方案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();
}
【解决方案3】:
ASP.net 使用您计算机上的特定用户帐户。就像您登录的主要帐户一样。该用户帐户无权对硬件进行任何操作。
要在 ASP.net 中模拟其他帐户,请执行以下操作:
创建一个与网络用户具有所有相同权限的帐户,然后在 web.config 文件中的配置标签之间添加以下代码
<identity impersonate="true" userName="somedomain\newUser" password="newUsersPassword" />
【讨论】:
-
我认为这并不完全准确,默认情况下(至少到 IIS 7.5)应用程序池标识以 NetworkService 运行。该文档指出网络服务具有“分配给用户和经过身份验证的用户的任何权限”。完全信任它应该完全能够与硬件交互。