SecurityException bei c# und Infopath

zioProduct

Erfahrenes Mitglied
Halli hallo hallöle!
Also ich habe endlich rausgefunden wie ich c# an Infopath koppeln kann! Nun fein, ich habe einen Button, über welchen ich einen OpenFileDialog öffne, um den Pfad einer Datei in mein TextField zu schreiben.

C#:
[InfoPathEventHandler(MatchPath="btnLasPaFi", EventType=InfoPathEventType.OnClick)]
	public void btnLasPaFi_OnClick(DocActionEvent e)
	{
IXMLDOMNode txtLasParFile = thisXDocument.DOM.selectSingleNode("my:meineFelder/my:txtLasParFile");
	OpenFileDialog ofdlg = new OpenFileDialog(); 
	ofdlg.Filter = "All files (*.*)|*.*" ; 
	ofdlg.FilterIndex = 2 ; 

	if(ofdlg.ShowDialog() == DialogResult.OK) 
	{ 
		txtLasParFile.text = ofdlg.FileName.ToString();
	}
Also der Dialog öffnet sich, ich wähle die Datei aus, und drücke Öffnen, folglich sind wir bei der 11ten Zeile. Und hier wirft er mir folgenden Fehlerbeschrieb aus
Code:
System.Security.SecurityException
Request for the permission of type System.Security.Permissions.FileIOPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 failed.
   at System.Security.CodeAccessSecurityEngine.CheckHelper(PermissionSet grantedSet, PermissionSet deniedSet, CodeAccessPermission demand, PermissionToken permToken)
   at System.Security.CodeAccessSecurityEngine.Check(PermissionToken permToken, CodeAccessPermission demand, StackCrawlMark& stackMark, Int32 checkFrames, Int32 unrestrictedOverride)
   at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark)
   at System.Security.CodeAccessPermission.Demand()
   at System.Windows.Forms.IntSecurity.DemandFileIO(FileIOPermissionAccess access, String fileName)
   at System.Windows.Forms.FileDialog.get_FileName()
   at TamsCsMaf.TamsCsMaf.btnLasPaFi_OnClick(DocActionEvent e) in c:\documents and settings\rittermi\desktop\tams-offline\testcsinf\tamscsmaf\formcode.cs:line 43
   at Microsoft.Office.Interop.InfoPath.SemiTrust._ButtonEventSink_SinkHelper.OnClick(DocActionEvent pEvent)
Leider finde ich im Zusammenhan mit dieser Fehlermeldung im Internet nur Zugriffsberechtigungen, habe jedoch alle Zugriffe erlaubt, und eigentlich lese ich ja nur den File-Namen, und mache sonst mit der Datei nichts...
Any Ideas?
Liegt es daran dass ich mittels C#-Code über Infopath so eine Funktion ausführe?

Danke für Ideen oder Vorschläge

Grüsse
ziop
 
Beide Dinge stehen schon :)
Zeile 11, kommt folgender Dialog von Infopath, mom ich bau mal nen Try-Catch, mal schauen was C# mir sagt

*edit*
Die Meldung im Infopath ist die c# Meldung, folglich sind beide Dinge deiner Frage schon in meiner Ersteller-Thread vorhanden :)
 
Zuletzt bearbeitet:
Mach mal folgendes:
C#:
if(ofdlg.ShowDialog() == DialogResult.OK)
 
{
FileIOPermission filePerm = new FileIOPermission(FileIOPermissionAccess.Read, ofdlg.FileName);
filePerm.Assert();
txtLasParFile.text = ofdlg.FileName.ToString();
}
 
Nun fliegt er einfach bei der Definition von filePerm raus;
Ich vermute das
Code:
ofdlg.FileName
der Hauptschuldige ist...
Die Frage ist aber, inwiefern ist er schuld, und wie kann ich seine Schuld begleichen...;)
Komische Sache, die meisten Artikel im Internet die ich finde sind Schreibrechte von einer Netzwerkanwendung auf ein Lokales File... Nun mein InfoPath ist aber keine NetzwerkApp. mühsamer Fehler :(
 
So und ich denke, dass wir auch dein Problem lösen können:

Alle Form-Templates unter InfoPath haben einen zugewiesenen Security Level. Insgesamt gibt es derer 3:
  • Restricted
  • Domain Trust
  • Full Trust
Und genau diesen Security Level musst du entweder auf Domain Trust oder Full Trust setzen, damit deine gewünschte Operation ausgeführt werden kann.

Nähere Infos gibt es hier.

Gutes Gelingen und wenns funktioniert, bitte auf erledigt setzen :)
 
Zurück