为了打开和保存 Office 文件,我将 ITHit WebDav 服务器集成到我的解决方案中。WebDav 在一个单独的项目中实现,但在同一个解决方案中。本地它工作正常,我可以打开和保存 Word 和 Excel 文档。但是部署后,当我尝试打开文件时,出现以下错误:
Sorry, we couldn’t open the File “http://MyWebSite.de/Storage/test.xlsx”
Microsoft Excel cannot access the file “http://MyWebSite.de/Storage/test.xlsx”.
There are several possible reasons:
- The file name or path does not exist.
- The file being used by another program.
- The workbook you are trying to save has the same name as a currently open workbook.
文件位于正确的位置,应用程序对其拥有完全的权利。
本地 WebDav 项目有自己的 web.config。但是在部署之后,WebSite 项目中只有 web.config,WebDav 是 Bin 文件夹中的 .dll 文件。
网站 web.config 服务端和本地:
...
<location path="Storage">
<system.web>
<httpHandlers>
<clear />
<add verb="*" path="*" type="WebDav.DavHandler, WebDav" />
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add name="My WebDAV Handler" path="*" verb="*" type="WebDav.DavHandler, WebDav" preCondition="integratedMode" />
</handlers>
</system.webServer>
</location>
...
WebDav web.config 本地:
...
<system.web>
<httpHandlers>
<clear/>
<add verb="*" path="*" type="WebDav.DavHandler, WebDav"/>
</httpHandlers>
<httpModules>
<remove name="FileAuthorization"/>
<add name="ITHitPutUploadProgressAndResumeModule" type="ITHit.WebDAV.Server.ResumableUpload.PutUploadProgressAndResumeModule, ITHit.WebDAV.Server"/>
<add name="ITHitPostUploadProgressModule" type="ITHit.WebDAV.Server.PostUploadProgressModule, ITHit.WebDAV.Server"/>
</httpModules>
<httpRuntime executionTimeout="2400" maxRequestLength="2097151" requestPathInvalidCharacters="" relaxedUrlToFileSystemMapping="true" targetFramework="4.5"/>
<customErrors mode="Off"/>
<authentication mode="None"/>
<authorization>
<allow users="*"/>
</authorization>
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
<compilation targetFramework="4.5" debug="true"/>
</system.web>
<system.webServer>
<handlers>
<clear/>
<add name="aspnet_isapi 32-bit ASP.NET 2.0" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness32"/>
<add name="aspnet_isapi 64-bit ASP.NET 2.0" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness64"/>
<add name="aspnet_isapi 32-bit ASP.NET 4.0" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness32"/>
<add name="aspnet_isapi 64-bit ASP.NET 4.0" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness64"/>
<add name="My WebDAV Handler" path="*" verb="*" type="WebDav.DavHandler, WebDav" preCondition="integratedMode"/>
</handlers>
<modules>
<remove name="FileAuthorization"/>
<add name="ITHitPutUploadProgressAndResumeModule" type="ITHit.WebDAV.Server.ResumableUpload.PutUploadProgressAndResumeModule, ITHit.WebDAV.Server"/>
<add name="ITHitPostUploadProgressModule" type="ITHit.WebDAV.Server.PostUploadProgressModule, ITHit.WebDAV.Server"/>
<remove name="WebDAVModule"/>
</modules>
<validation validateIntegratedModeConfiguration="false"/>
<security>
<requestFiltering allowDoubleEscaping="true">
<fileExtensions>
<clear/>
</fileExtensions>
<hiddenSegments>
<clear/>
</hiddenSegments>
<requestLimits maxAllowedContentLength="2147483648"/>
</requestFiltering>
</security>
<staticContent>
<mimeMap fileExtension=".pkg" mimeType="application/octet-stream"/>
<mimeMap fileExtension=".deb" mimeType="application/octet-stream"/>
</staticContent>
</system.webServer>
...
我该如何解决这个问题?