none
split command error RRS feed

  • 問題

  • Dim username = User.Identity.Name.ToString.Split("\")(1) 

    上面那段code是想把retrievedomain\username利用split command轉變為純粹username的形式. 在VB compile的時候可以正確運行得到正確的data, 但是如果直接用IE打開的話就會出現這樣的error:

    '/' 應用程式中發生伺服器錯誤。

    索引在陣列的界限之外。

    請問是什麼原因? 我的split command應該怎麼改才好??謝謝各位大大

     

      

    2009年3月13日 上午 08:33

解答

  • 您是已經放到IIS內了嗎? 把目錄安全設定中的[啟用匿名存取]取消勾選.


    微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan
    • 已標示為解答 Forza_Milan 2009年3月16日 上午 07:58
    2009年3月16日 上午 04:03

所有回覆

  •  先檢查有沒有\這個字串 再切割

    或是切割後檢查數量超過1個

    if User.Identity.Name.ToString.Split("\").length > 1 then

    ...
    Dim username = User.Identity.Name.ToString.Split("\")(1)

    end if
    2009年3月13日 上午 09:17
  • 如果純粹是User.Identity.Name.ToString就是得到domain\usernamedata. ‘\’是分隔開domainusername的符號

    2009年3月13日 上午 09:40
  • 問題是我用VB compile沒有出錯, 用IE打開就不行了

    2009年3月13日 上午 09:41
  • 把這時的 User.Identity.Name.ToString 輸出來,就知道為何錯。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年3月13日 上午 09:42
  • 輸出的就是"DA_DOMAIN\AlexMo", 看不出來錯在哪
    2009年3月13日 上午 09:51
  • 題外話
    Dim username = User.Identity.Name.ToString.Split("\")(1)
    給username一個型別不是比較好嗎?
    Dim username as string
    username = User.Identity.Name.ToString.Split("\")(1)

    試試看

    Dim username as string
    username = User.Identity.Name.ToString.Split("\\")(1)




    2009年3月13日 上午 10:11
  • 前面每一位朋友的回答都已經足以解答你的問題, 但似乎你並沒有真正動手去了解問題在哪裡。

    你的問題在 Runtime 才會出現; Compile 沒出錯不代表一切沒問題。其次, 你有考慮到尚未登入時或者取到錯誤的值 (例如空字串) 的狀況嗎? 其實我建議你只要在程式中設定中斷點, 再使用 Quick Watch 並直接打 User.Identity.Name, 看看結果是什麼, 應該就可以看出問題出在哪裡。在這裡, 如果按下 Reevaluate 按鈕後真的看到 DA_DOMAIN\AlexMo, 你可以再試試打 User.Identity.Name.ToString.Split("\")(1) 會得到什麼。
    ASP.NET 2Share - http://phone.idv.tw/cs2/
    2009年3月13日 上午 10:17
  • 我以前就已經用中斷點 , User.Identity.Name.ToString.Split("\")(1)顯示出來的結果是AlexMo

    2009年3月16日 上午 01:46
  • 會不會問題點不在那一行,因為您都能抓到值了, 可能是後續的程式碼處理有問題 .

    以上建議提供您參考.
    微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan
    2009年3月16日 上午 02:36
  • 我想他會有錯誤應該就是這兩句:
    VB compile的時候可以正確運行得到正確的data, 但是如果直接用IE...
    我以前就已經用中斷點 試過, User.Identity.Name.ToString.Split("\")(1)顯示出來的結果是AlexMo

    "在VB compile的時候可以正確運行得到正確的data" 這句不管是 Window Form 或是虛擬伺服器,都會用目前的使用者登入。
    直接用 IE ,並沒說明認證方式,是 Windows 認證還是允許匿名連入?更白爛一點,該不會用 IE 直接開硬碟中的 aspx 吧?

    一個不精準的描述,在程式討論區會產生很大的誤解。

    而除錯是要針對執行環境進行,說實在的,脽管你以前用中斷點跑的結果?我們關心的是在 IE 上跑的結果,所以才會要求把這時的內容輸出來,會看不懂這句的,表示沒經過 Response.Write 除錯法除錯。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年3月16日 上午 03:02
  • 我的認證方式,是 Windows 認證:

     

    <authentication mode="Windows">

    </authentication >

    <identity impersonate="true" />

       

    得确是没有试过用response.write除错, 请问是不是应该这样做呢? Response.Write(User.Identity.Name.ToString), IE上出来的结果就是DA_DOMAIN\AlexMo

    2009年3月16日 上午 03:34
  • 像這種的要用除錯器去抓會比較有效。
    也許錯誤發生當下,User.Identity.Name 輸出的並不是 "DOMAIN\User" 格式,你也可以在處理這一段之前先加一道檢查程序。

    例如:

    if User.Identity.Name.Split("\").Length > 1 Then 
       .... ' 如果 User.Identity.Name 是 Domain\User 格式時的處理程式。  
    Else 
       .... ' 如果 User.Identity.Name 不是 Domain\User 格式時的處理程式。  
    End If 

    MVP 2009 (ASP.NET), MCPD: ASP.NET Developer 3.5, MCPD: Windows Developer 3.5, MCITP: Database Developer 2008, MCITP: Enterprise Administrator 不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    2009年3月16日 上午 03:54
    版主
  • 忘記說了, Response.Write(User.Identity.Name.ToString), IE上出結果:DA_DOMAIN\AlexMo是在Debug時的情況. 如果直接用IE打開就什麼都沒有顯示, 應該是沒有retrieve User.identity.Name並沒有成功.

    2009年3月16日 上午 03:59
  • 您是已經放到IIS內了嗎? 把目錄安全設定中的[啟用匿名存取]取消勾選.


    微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan
    • 已標示為解答 Forza_Milan 2009年3月16日 上午 07:58
    2009年3月16日 上午 04:03
  • Dim aryName As String() = User.Identity.Name.ToString.Split("\") 
     
            Dim username As String 
     
            If aryName.Length > 1 Then 
                  username = aryName(1) 
                  Me.text1.Text = username 
            Else 
                  username = aryName(0) 
            End If 

    我自己試著用arrary方法改了一下code, IE直接打開時沒有已經上面說的error, 但是沒有retreive到任何東西. debug mode下麵是成功了的. 我的做法應該和小朱大大的方法很接近吧

    2009年3月16日 上午 04:11
  • 已經放到IIS裏面了, 但是如果取消了[啟用匿名存取], 我在web.config裏面又設定了:

    <identity impersonate="true" />, 這樣不會有衝突嗎? 我取消後再打開IE就顯示不了我自己的webpage.

     

    2009年3月16日 上午 04:17
  • 我覺得你需要看看這篇:http://msdn.microsoft.com/zh-tw/library/xh507fc5.aspx


    MVP 2009 (ASP.NET), MCPD: ASP.NET Developer 3.5, MCPD: Windows Developer 3.5, MCITP: Database Developer 2008, MCITP: Enterprise Administrator 不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    2009年3月16日 上午 04:26
    版主
  • <configuration>      
     
    <system.web> 
     
    <authentication mode="Windows"/> 
     
    <identity impersonate="true" /> 
     
    </system.web> 
     
    </configuration> 

    上面是我在web.config里面的设置, 请问有问题吗???我取消 [啟用匿名存取] 後再打開IE就顯示不了我自己的webpage

    2009年3月16日 上午 06:34
  • 我之前 把目錄安全設定中的[啟用匿名存取]取消勾選, 忘記選Windows整合驗證了, 白癡啊, it works well now. Thanks everyone

    2009年3月16日 上午 07:58