2011-04-28 64 views
3

我正在處理一個asp.net應用程序,我希望它通過一個串行端口與arduino板通信。我創建了一個windows應用程序,可以做到這一點,它的工作原理,但是當我在我的asp.net應用程序上使用相同的代碼時,我得到一個異常,說「訪問端口COM7被拒絕」。現在我一直在網上衝浪尋找答案,我遇到了一個論壇,他們談論了使用模擬授予asp.net權限。我在使用.net框架和串行端口方面很新穎。如果任何人都可以提供幫助,請做或者發佈可能有用的鏈接。我需要什麼ASP.NET權限才能訪問串行端口?

Thanx提前。

回答

2

ASP.net在您的計算機上使用特定的用戶帳戶。就像您登錄的主賬戶一樣。該用戶帳戶沒有權限對硬件進行任何操作。

冒充在ASP.net其他帳戶,你做到以下幾點:

創建擁有所有相同的權限的,該網絡用戶呢,然後在web.config文件中添加以下代碼的帳戶配置標籤

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

謝謝你的回覆,我會試試看。 – skhokho 2011-04-28 14:58:43

+0

我不認爲這是完全準確的,默認情況下(至少達到IIS 7.5)應用程序池標識作爲[NetworkService]運行(http://msdn.microsoft.com/en-us/library/ms684272(v = vs.85)的.aspx)。該文檔聲明網絡服務具有「分配給用戶和經過身份驗證的用戶的任何權限」。完全信任它應該完全有能力與硬件進行交互。 – R0MANARMY 2011-04-28 15:54:30

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節建議授予完全信任你的整個應用程序的解決方法(這可能是一個安全隱患)。

-1

嘗試打開連接並關閉串口阻塞命令的連接。 Ex

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(); 
} 
+0

與該問題無關! – 2013-10-02 20:14:24

相關問題