Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Сообщение

khasya


Принципиальный молчун

Зарегистрирован:
29 February 2008
Сообщения: 4
Примеры кода: 0
 

WebSevice.htc. вызов сервиса из JavaScript

24 March 2008 17:47  


Всем привет!
Собственно вопрос в следующем: есть функция на JavaScript, из которой надо вызвать метод сервиса, написанного на ASP.NET.
Скрипт запускается Web-приложением ASP.NET с обычной Windows-аутентификацией, сервис - с интегрированной(встроенной)-Windows аутентификацией.
Для вызова функции на страницу загружается объект WebService.htc.
Проблема в том, что пользователь, прошедший обычную Windows-аутентификацию(User.Identity.Name), и правильно распознанный приложением, на сервис не передается. Точнее, передается пользователь, от имени которого запущен IE.
А если к приложению обращаются с другой машины, то и вовсе приходит аноним.

Ниже привожу коды основных компонентов.

Страница WebForm1.aspx

<script language="javascript" id="EventHandlerJS">
			function GetDataFromService( obj_id )
			{
				var proxy = this.document.getElementById("proxy");
				var arg = obj_id;
				if (proxy != null)
				{
					//вызов сервиса через WebService.htc
                                        proxy.useService("http://"+location.hostname+"/AspService/AspService.asmx?wsdl", "AspService");		
 				        proxy.AspService.callService(resultHandler, "GetDataSet", arg);
                                 }
			}
			
			function resultHandler(result)
			{
				
				alert(result.value);
				FormResult.select.value = result.value;
				var win = window.open("/app/Default.aspx", "myclientname");
				FormResult.submit();
				win.focus();		
			}
</script>

...

<div id="proxy" style="BEHAVIOR: url(webservice.htc)"></div>

<FORM name="FormResult" action="/app/Default.aspx" method="post" target="mapclient">
	<input id="select" style="WIDTH: 0px; HEIGHT: 0px" type="text" name="select" runat="server">
</FORM>
<table><tr><td>
<xsl:element name = "a">								
    <xsl:attribute name="href">JavaScript:GetDataFromService("123")</xsl:attribute>
    <xsl:text>Переслать данные</xsl:text>
</xsl:element>
</td></tr></table>
Вызываемая на сервисе функция (AspService.asmx.cs)
[WebMethod]
public DataSet GetDataSet(String arg )
{
  DataSet ds = new DataSet();
  //список пользователей, имеющих право получения данных
  //для примера - только админ
  string allowed_usr = "Admin";

  //ВОТ ТУТ недошедший пользователь asp.net приложения
  if( User.Identity.Name == allowed_usr )
     //получить данные
     ds = FillData( arg );
  return ds;
}

Может кто то сталкивался с подобной проблемой и сумел ее решить?

Буду очень благодарен за вашу помощь!
Наверх
  



Web Services

 WebSevice.htc. вызов сервиса из JavaScriptkhasya  24 March 2008 17:47
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта