2012-06-25 21 views
4

我有一個.ASHX處理程序我想用來處理HTTP PUT以允許我將文件上傳到Web服務器 - .ASHX文件實際上傳數據並將文件粘貼到其他地方,所以它實際上從來沒有在這裏接觸到磁盤。在ASP.NET中處理.ashx處理程序中的HTTP PUT而不調整文件權限

我已經設置了web.config以允許它處理HTTP PUT,但IIS不會將請求傳遞給我的代碼,除非我將.ASHX文件本身的ACL設置爲可寫 - 哪一個是有點愚蠢,因爲我們實際上不會寫入這些文件。

如果我設置了ACL,它可以正常工作,但我希望能夠處理文件而不必設置ACL(我確信有一個合適的方法可以讓IIS通過HTTP付諸ashx的文件,而不檢查文件本身的權限。

這是對的Win2008 R2(實際上,這是對Azure的2008 R2,但應該是一樣的),使用.NET 4.0

401 - Unauthorized: Access is denied due to invalid credentials. You do not have permission to view this directory or page using the credentials that you supplied.

+0

請問您是否曾設法找到解決方案?我幾乎完全一樣(使用Win7 vs Win2008),但我有完全相同的症狀。我得到401.3錯誤,除非我授予所有人完全控制權(完全授予IIS_ISUSRS組是不夠的)。 – Danny

回答

0

獲取PUT(和DELETE)與ASP.NET一起工作有幾個障礙,因爲你提到Win2008 R2(IIS 7.5) ck來查看您所看到的錯誤是否提及WebDAV模塊或處理程序。

從IIS 7.5開始默認啓用WebDAV。它將干擾ASP.NET處理程序和模塊上的HTTP PUT和DELETE動詞。如果你正在實施一個RESTful服務,你甚至可能不會使用這個功能。通過你的web.config禁用它。

<system.webServer> 
    <modules> 
     <remove name="WebDAVModule" /> 
    </modules> 
    <handlers> 
     <remove name="WebDAV" /> 
    </handlers> 
</system.webServer> 

一些其他的解決方案在題爲HTTP Error 405 With ASP.Net MVC and HTTP PUT on IIS 7.5這個論壇帖子中提到的。

+1

我試過了;這不是WebDAV被啓用的問題。訣竅是,如果我更改ASHX文件上的ACL,它就可以工作。這是完全跛腳的;我實際上並沒有碰到文件系統。 :( –

+1

當ACL沒有設置時,你會得到什麼錯誤(HTTP錯誤代碼,異常等)?你可以將它粘貼到問題中嗎? –

+0

Arg!對不起,我以爲我之前已經指定了。 401(當通過本地主機完成時,具體爲401.3) –

相關問題