Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Развертывание сайта с COM элементами, Проблемы с доступом к COM объектам 
:(
    Опции темы
Апрельский Ёжик
Дата 18.8.2007, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Имеется COM объект , написанный в Delphi 6 (по суте обертка для FastReport 4 , но это не важно). Написан он для возможности применения FastReport (длалее FR) в рамках приложения ASP.NET. Проще говоря для возможности генерировать отчеты. По необходимости могу выложить код COM. 

FR обернутый в COM прошел успешное тестирование на стенде написанном в Delphi и позже под ASP.NET (при дебагге на встроенном web сервере). Но вот при развертывании возникли проблемы. Проблем было много, с БД, с файлами, вообще все что могло быть с доступом. И сейчас я застрял на этой части с COM.

Я зарегистрировал объект через regsv32, добавил в проект ссылку (на влкадке COM мой объект успешно появился после регистрации). Начал тестировать, все заработало гладко. Но при развертывании на локальном сервере вышло такое сообщение:


Код

Server Error in '/MyApp' Application.
--------------------------------------------------------------------------------

Retrieving the COM class factory for component with CLSID {DF0B0B66-4EC0-4634-AE7B-892D2D97EDBD} failed due to the following error: 80070005. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {DF0B0B66-4EC0-4634-AE7B-892D2D97EDBD} failed due to the following error: 80070005. 

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate="true"/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user. 

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Source Error: 


Line 261:    {
Line 262:        
Line 263:        FR FRTest = new FR();
Line 264:
Line 265:        FRTest.FRCreate();
 

Source File: d:\WebServer\Struc.aspx.cs    Line: 263 

Stack Trace: 


[UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {DF0B0B66-4EC0-4634-AE7B-892D2D97EDBD} failed due to the following error: 80070005.]
   Struc.Button1_Click(Object sender, EventArgs e) in d:\WebServer\Struc.aspx.cs:263
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102

 


--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42 


Разбираясь в проблеме выбрел на вариант где надо выделить (естествнно) права на доступ к этому объекту. Был вариант это сделать с помощью Службы компонентов - Мой компьютер - Настройки DCOM. Но там я не обнаружил ни своего объекта , ни его CLSID (GUID). Т.е. ничего выделить не смог. 

Упустил два существенных момента:
1) Авторизация сделана с помощью форм
2) Пробовал добавить в web.config "<identity impersonate="true"/>" - не помогло , да и насколько я понял это не совсем то что нужно.

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

Спасибо за внимание, и буду очень благодарен за помощь.

PS поиск по интернету и форуму меня не вывел на решение этой проблемы, все больше были вопросы по MS Office и компонентам, прошу не думайте что я не искал и не старался найти решение самостоятельно, видимо у меня недостаточно опыта, надеюсь что кто-то им со мной поделится.

Это сообщение отредактировал(а) Апрельский Ёжик - 18.8.2007, 17:14
PM MAIL   Вверх
Mymik
Дата 19.8.2007, 10:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



КЛАЦ <<-- мне кажется тебе вот тут вот помогут. 


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Апрельский Ёжик
Дата 20.8.2007, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Спасибо огромное. Решение моей проблемы там есть (не в туториале , в комментах). 

Суть в том что недостаточно прав у учетной записи из под которой работает ASP.NET (имя записи ASPNET) для создания и использования COM объектов. Но мой COM не состоит в списке DCOM серверов как Excel... Решил это вот так:

<system.web>
<identity impersonate="true" userName="LAPTOP\UserName" password="mypass"/>

UserName - пользователь из под которого я работаю (администратор в моем случае)
mypass - пароль

Добавляется запись в конфиг в раздел <system.web>.

Это конечно не лучший вариант , но ввиду того что я и так слишком много времени убил на это - сойдет. В идеале было бы хорошо разобраться где в Windows можно эти права ручками выделить , а не заимствовать их у пользователя (это именно заимствование прав).

Это решение подходит в случае если у вас ошибка 80070005 - недостаточно прав. 

Ещё раз всем спасибо , и Mymik в особенности.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0405 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.