Создать ошибку страницы веб-части в режиме отладки - PullRequest
0 голосов
/ 15 сентября 2011

Я на самом деле создаю страницу веб-части и использую эту технику из сообщения Алекса Ангаса в Программно создаю страницу веб-части в Sharepoint

string SiteLocation = "http://abcd.com/sites/forum/";
SPSecurity.RunWithElevatedPrivileges(delegate(){
using(SPSite site = new SPSite(SiteLocation)){
    using(SPWeb web = site.OpenWeb()){
        foreach(SPWeb oweb in web.Webs){
            bool allowUnsafeUpdates = oWeb.AllowUnsafeUpdates;
            oWeb.AllowUnsafeUpdates = true;
            string strFileName = "Mobile.aspx";
            string strTemplateFileName = "spstd1.aspx";
            string strPath = "TEMPLATE\\1033\\STS\\DOCTEMP\\SMARTPGS";
            string hive = SPUtility.GetGenericSetupPath(strPath);

            //--- Error encountered on this line ---
            FileStream stream = new FileStream(hive + strTemplateFileName,FileMode.Open);
            //--------------------------------------

            SPFolder libraryFolder = oWeb.GetFolder(WebPartPageDocLibName);
            SPFileCollection files = libraryFolder.Files;
            SPFile newFile = files.Add(strFileName, stream);
            oWeb.Update();
            oWeb.AllowUnsafeUpdates = allowUnsafeUpdates;
        }
    }
}

});

Я сталкиваюсь с этой ошибкой

IOException не было обработано кодом пользователя

Процесс не может получить доступ к файлу 'C: \ Program Files \ Common Files \ Microsoft Shared \ Расширения веб-сервера \ 12 \ TEMPLATE \1033 \ STS \ DOCTEMP \ SMARTPGS \ spstsd1.aspx '

, но меня раздражает то, что когда я вхожу в него в режиме отладки, ошибка не появляется.И когда я перезапускаю приложение и запускаю его, не наступая на него, появляется ошибка.Может кто-нибудь помочь мне в этом, пожалуйста.

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Очевидно, что ошибка не указывает на то, есть ли у вас доступ к вашему 12hive пути или нет.Если вы изучили свой код, вы фактически открыли файл spstd1.aspx , и поскольку операционная система не позволяет использовать этот файл, когда он открыт, поэтому вы сталкиваетесь с такого рода ошибками во время выполнения.

Как вы знаете, во время сеанса отладки причина, по которой вы не нажали эту ошибку, заключается в том, что она дает вашему потоку достаточно времени для завершения процесса.

Вы можете решить эту проблему, правильно утилизировав свой объект FileStream.

FileStream stream = null;
try{
    string SiteLocation = "http://abcd.com/sites/forum/";
    SPSecurity.RunWithElevatedPrivileges(delegate(){
        using(SPSite site = new SPSite(SiteLocation)){
            using(SPWeb web = site.OpenWeb()){
                foreach(SPWeb oweb in web.Webs){
                    bool allowUnsafeUpdates = oWeb.AllowUnsafeUpdates;
                    oWeb.AllowUnsafeUpdates = true;
                    string strFileName = "Mobile.aspx";
                    string strTemplateFileName = "spstd1.aspx";
                    string strPath = "TEMPLATE\\1033\\STS\\DOCTEMP\\SMARTPGS";
                    string hive = SPUtility.GetGenericSetupPath(strPath);

                    //--- Error encountered on this line ---
                    stream = new FileStream(hive + strTemplateFileName,FileMode.Open);
                    //--------------------------------------

                    SPFolder libraryFolder = oWeb.GetFolder(WebPartPageDocLibName);
                    SPFileCollection files = libraryFolder.Files;
                    SPFile newFile = files.Add(strFileName, stream);
                    oWeb.Update();
                    oWeb.AllowUnsafeUpdates = allowUnsafeUpdates;
                }
            }
        }

    });
}
catch(Exception ex)
{
    // handle or throw your exception 
    // or do any necessary error handling
    throw new Exception(ex.Message,ex);
}
finally{
    // it is necessary to dispose your FileStream object to
    // allow access of the file spstd1.aspx on the next usage.
    if(stream!=null) stream.Dispose();
}
0 голосов
/ 15 сентября 2011

Похоже, ваш пул приложений не имеет доступа к вашему 12hive пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...