2011-07-14 12 views
7

Mam witrynę ASP.NET (.NET 4), która używa http PUT dla obsługi ogólnej .ashx. Wywołanie PUT pochodzi z przedniego zakończenia Silverlight. Wszystko działa w VS 2010 na moim lokalnym komputerze (serwer WWW Cassini).Włączanie PUT w IIS 7.5 dla programu obsługi ASHX przy użyciu uwierzytelniania systemu Windows

Następnie wdrożyłem do skrzynki IIS7.5 Win Server 2008 R2.

Witryna silverlight/witryna jest w porządku, ale wywołania PUT do obsługi obsługi .ashx są wyświetlane z monitem logowania do systemu Windows.
To lokalny intranet, więc uwierzytelnianie systemu Windows (z NTLM & Negocjuj dostawców) jest jedynym włączonym uwierzytelnieniem.

Potem przeczytałem to: http://blogs.msdn.com/b/joseph_fultz/archive/2009/07/23/enabling-the-put-verb-with-handlers-and-iis-7-0.aspx

I już po jego sugestię i mogę teraz zrobić PUT połączeń za pośrednictwem mojego przewodnika .ashx. Problem polega tylko na tym, że grupa administratorów może to zrobić na serwerze WWW. Nikt inny nie może. Spotykają się z monitem logowania do systemu Windows.

Każdy pomysł, co to może być?

Nie mogę przyznać wszystkim osobom w firmie uprawnień administratora na serwerze internetowym. Bez wątpienia odetną mi jedną z moich rąk, zjedzą tę rękę przede mną, a potem pokażą mi drzwi.

Odpowiedz

10

Ok, wymyśliłem to.

Oto kluczowe elementy konfiguracyjne w IIS 7.5:

  1. Pod Windows Authentication/Providers - NTLM musiał być na szczycie Negocjuj
  2. Użytkownicy domeny potrzebne zapisu do katalogu zawierającego obsługi ashx
  3. Autoryzacja adresu URL nie została włączona jako rola na serwerze internetowym. Dodałem go, a następnie zatrzymany to w web.config pod system.webServer:

    <security> 
        <authorization> 
         <remove users="*" roles="" verbs="" /> 
         <add accessType="Allow" users="*" verbs="GET,HEAD,POST,PUT,DELETE,DEBUG" /> 
        </authorization> 
    </security> 
    

(ja przyciąć że nieco w dół, ale na razie to działa)

My cały system Element .webServer jest następujący:

<system.webServer> 
    <modules> 
     <remove name="WebDAVModule" /> 
    </modules> 
    <defaultDocument> 
     <files> 
      <clear /> 
      <add value="default.aspx" /> 
     </files> 
    </defaultDocument> 
    <handlers accessPolicy="Read, Write, Execute, Script"> 
     <remove name="WebDAV" /> 
     <remove name="SimpleHandlerFactory-Integrated-4.0" /> 
     <remove name="SimpleHandlerFactory-Integrated" /> 
     <add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG,PUT" type="System.Web.UI.SimpleHandlerFactory" resourceType="Unspecified" requireAccess="Write" preCondition="integratedMode" /> 
     <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG,PUT" type="System.Web.UI.SimpleHandlerFactory" resourceType="Unspecified" requireAccess="Write" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    <security> 
     <authorization> 
      <remove users="*" roles="" verbs="" /> 
      <add accessType="Allow" users="*" verbs="GET,HEAD,POST,PUT,DELETE,DEBUG" /> 
     </authorization> 
    </security> 

</system.webServer> 

To się udało.

+0

Każde rozwiązanie dla aplikacji .net 3.5 –