<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      遇到 Web Server 中不能使用 XmlSerializer 的問題

      剛剛解決了這個問題,查了N多的資料,終于被我解決了。

      問題是如下的一段測試代碼:

              [Serializable]public class TTT{public string NNN; public string DDD;}

              
      void ttt()
              
      {
                  TTT t 
      = new TTT();
                  t.DDD 
      = "dddddd"; t.NNN = "yyyyyyyy";
                  
      string xml;

                  
      using(MemoryStream s = new MemoryStream())
                  
      {
                      XmlSerializer ser 
      = new XmlSerializer(typeof(TTT));
                      ser.Serialize(s, t);
                      s.Flush();
                      xml 
      = Encoding.Default.GetString(s.ToArray());
                  }


                  
      using(MemoryStream s = new MemoryStream(Encoding.Default.GetBytes(xml), false))
                  
      {
                      XmlSerializer ser 
      = new XmlSerializer(typeof(TTT));
                      TTT a 
      = (TTT)ser.Deserialize(s);
                      System.Diagnostics.Debug.WriteLine(
      string.Format("a={0}; b={1}", a.DDD, a.NNN));
                  }

              }


       

      在本地直接調用的時候一切正常,但是放到WebServer下面就出錯:

      Exception: System.InvalidOperationException
      Message: Unable to generate a temporary class (result=1).
      error CS2001: Source file 'C:\WINNT\TEMP\awwihhwh.0.cs' could not be found
      error CS2008: No inputs specified

      Source: System.Xml
         at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, CompilerParameters parameters, Evidence evidence)
         at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, CompilerParameters parameters, Assembly assembly, Hashtable assemblies)
         at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)
         at System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace)
         at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
         at System.Xml.Serialization.XmlSerializer..ctor(Type type)

      開始就意識到肯定是調用者 ttt() 的權限不夠,于是開始找如何把權限提高。首先用這個方法來強制提高權限,結果不幸:

                      PermissionSet ps = new PermissionSet(null);
                      ps.AddPermission(
      new SecurityPermission(SecurityPermissionFlag.Infrastructure
                          
      //|SecurityPermissionFlag.SerializationFormatter
                          |SecurityPermissionFlag.RemotingConfiguration
                          
      |SecurityPermissionFlag.AllFlags
                          ));
                      ps.AddPermission(
      new FileIOPermission(FileIOPermissionAccess.Read, new string[]{BASE_PATH,DATA_PATH}));
                      
      //ps.AddPermission(new FileIOPermission(System.Security.Permissions.PermissionState.Unrestricted));
                      ps.Assert();

      然后開始考慮使用自定義的策略文件,找到了Microsoft Windows SharePoint Services 與代碼訪問安全,仿照它做了一個策略文件,在我的Web.config中加了如下的一段:

      <system.web>
      <securityPolicy>
      <trustLevel name="aaa" policyFile="aaa.config"/>
      </securityPolicy>
      <trust level="aaa" originUrl=""/>
      <!-- trust level="Full" originUrl=""/ -->
      </system.web>

      然后把系統的 C:\WINNT\Microsoft.NET\Framework\v1.1.4322\CONFIG\web_lowtrust.config 復制過來改名aaa.config,并在其中添加了一下內容,部分如下:

      <NamedPermissionSets>
          
      <PermissionSet class="" Name="ASP.Net">
          
          
      </PermissionSet>
          
      <PermissionSet class="NamedPermissionSet" version="1" Name="_TtTtTtT_">
          整個節點從節點 ASP.Net 復制過來的,改一個名字 _TtTtTtT_
          
      </PermissionSet>
      </NamedPermissionSets>
      <CodeGroup class="FirstMatchCodeGroup" version="1" PermissionSetName="Nothing">
          
      <!-- 在第一個 CodeGroup 之前插入 -->
          
      <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="_TtTtTtT_">
              
      <IMembershipCondition class="StrongNameMembershipCondition" version="1.1.1.12345" 
                  Name
      ="我的.dll"
                  PublicKeyBlob
      ="" />
          
      </CodeGroup>
          
      <!-- 原來的內容 -->
          
      </CodeGroup>

      結果還是不行,錯誤的原因是無法給“我的.dll”設置權限(看來以后還要多多研究這個內容)。

      無奈之中,再到google搜索,結果發現確實有一個bug報告http://support.microsoft.com/default.aspx?scid=kb;en-us;322886,可惜是.net 1.0 的,我用的是1.1。但是在這片文章http://support.microsoft.com/default.aspx?scid=317012中卻明確要求ASP.net 正常運行需要有%installroot%\ASP.NET Temporary Files 和 %windir%\temp 兩個目錄的權限。

      最后,檢查兩個目錄的權限,發現前者有權限,而后者沒有。于是設置 c:\winnt\temp 讓 asp.net 有 Full Access權限。問題解決!但是這個是不是M$的安裝程序的問題啊??

      整個過程歷時從前天下午到現在。痛苦

      另外,發現很多人都遇到相同的問題,有仁兄建議說重裝.net和vs,幸好沒聽他的,否則不累死也要后悔死。

      posted on 2004-10-12 15:26  老翅寒暑  閱讀(1248)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 亚洲国产精品线观看不卡| 天天爽夜夜爽人人爽曰| 亚洲成在人线AV品善网好看| 午夜天堂精品久久久久| 久久青青草原国产精品最新片| 日本久久精品一区二区三区| 国产精品色一区二区三区| 久久亚洲欧美日本精品| 亚洲中文字幕乱码一区| jk白丝喷浆| 国产欧美日韩亚洲一区二区三区 | 莱西市| 99久久精品国产熟女拳交| 国产精品午夜精品福利| 性猛交ⅹxxx富婆视频| 日韩深夜福利视频在线观看| 亚洲精品综合第一国产综合| 东京一本一道一二三区| 成人永久性免费在线视频| 青青草无码免费一二三区| 久久国产精品老人性| 一 级做人爱全视频在线看| 小污女小欲女导航| 欧美人与zoxxxx另类| 成人3D动漫一区二区三区| 久热色视频精品在线观看| 国内极度色诱视频网站| 日本又色又爽又黄的a片吻戏| 欧美又黄又大又爽a片三年片| 蜜芽久久人人超碰爱香蕉| 成人无码午夜在线观看| 久久亚洲欧美日本精品| 日韩人妻无码精品久久| 开心一区二区三区激情| 亚洲熟妇熟女久久精品综合| 亚洲中文久久久精品无码| 377P欧洲日本亚洲大胆| 欧美日韩v| 亚洲自在精品网久久一区| 亚洲性日韩精品一区二区| 午夜福利激情一区二区三区|