System.Net.WebPermission.ToXml C# (CSharp) Method

ToXml() public method

public ToXml ( ) : SecurityElement
return System.Security.SecurityElement
        public override SecurityElement ToXml() {

            SecurityElement securityElement = new SecurityElement("IPermission");

            securityElement.AddAttribute( "class", this.GetType().FullName + ", " + this.GetType().Module.Assembly.FullName.Replace( '\"', '\'' ) );
            securityElement.AddAttribute( "version", "1" );

            if (!IsUnrestricted()) {
                String tempStr=null;

                if (m_UnrestrictedConnect || m_connectList.Count > 0)
                {
                    SecurityElement connectElement = new SecurityElement( "ConnectAccess" );

                    if (m_UnrestrictedConnect)
                    {
                        SecurityElement uripattern = new SecurityElement("URI");
                        uripattern.AddAttribute("uri", SecurityElement.Escape(MatchAll));
                        connectElement.AddChild(uripattern);
                    }
                    else
                    {
                        //NOTE All strings going to XML will become URI PATTERNS i.e. escaped to Regex
                        foreach(object obj in m_connectList) {
                            Uri uri = obj as Uri;
                            if(uri != null)
                                tempStr=Regex.Escape(uri.GetComponents(UriComponents.HttpRequestUrl, UriFormat.UriEscaped));
                            else
                                tempStr=obj.ToString();

                            if (obj is string)
                                tempStr = Regex.Escape(tempStr);

                            SecurityElement uripattern = new SecurityElement("URI");
                            uripattern.AddAttribute("uri", SecurityElement.Escape(tempStr));
                            connectElement.AddChild(uripattern);
                        }
                    }

                    securityElement.AddChild( connectElement );
                }

                if (m_UnrestrictedAccept || m_acceptList.Count > 0)
                {
                    SecurityElement acceptElement = new SecurityElement("AcceptAccess");

                    if (m_UnrestrictedAccept)
                    {
                        SecurityElement uripattern = new SecurityElement("URI");
                        uripattern.AddAttribute("uri", SecurityElement.Escape(MatchAll));
                        acceptElement.AddChild(uripattern);
                    }
                    else
                    {
                        //NOTE All strings going to XML will become URI PATTERNS i.e. escaped to Regex
                        foreach(object obj in m_acceptList) {
                            Uri  uri = obj as Uri;
                            if(uri != null)
                                tempStr=Regex.Escape(uri.GetComponents(UriComponents.HttpRequestUrl, UriFormat.UriEscaped));
                            else
                                tempStr=obj.ToString();

                            if (obj is string)
                                tempStr = Regex.Escape(tempStr);

                            SecurityElement uripattern = new SecurityElement("URI");
                            uripattern.AddAttribute("uri", SecurityElement.Escape(tempStr));
                            acceptElement.AddChild(uripattern);
                        }
                    }

                    securityElement.AddChild( acceptElement );
                }
            }
            else {
                securityElement.AddAttribute( "Unrestricted", "true" );
            }
            return securityElement;
        }

Usage Example

Esempio n. 1
0
		public void Serialization ()
		{
			string result1 = "<IPermission class=\"System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" + 
"version=\"1\">\n" + 
"<ConnectAccess>\n" + 
"<URI uri=\"Hello\"/>\n" + 
"</ConnectAccess>\n" + 
"</IPermission>\n";

			string result2 = "<IPermission class=\"System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" + 
"version=\"1\">\n" + 
"<AcceptAccess>\n" + 
"<URI uri=\"Hello\"/>\n" + 
"</AcceptAccess>\n" + 
"</IPermission>\n";
			WebPermission pp = new WebPermission (NetworkAccess.Connect, "Hello");
			Assert.AreEqual (result1, pp.ToXml ().ToString ().Replace ("\r", ""));
			
			pp = new WebPermission (NetworkAccess.Accept, "Hello");
			Assert.AreEqual (result2, pp.ToXml ().ToString ().Replace ("\r", ""));
		}