0

我正在使用下面的代码在 .Net Web 应用程序项目中显示 ajax 文件浏览器控件,我使用开发 Web 服务器在自动分配的端口上本地运行该项目。

webdav 服务器在 IIS 7(端口 80)上本地运行,它是一个使用 webdav.net 服务器库的 .net 应用程序。应用程序中的安全设置为 Windows 身份验证。我还允许匿名用户提出 OPTIONS 请求。

该页面在 IE 和 Chrome 中运行良好,但 FireFox 无法连接,它返回消息:找不到位置“.../WebDav/”。

我启用了 Firebug,问题是 Webdav 服务器向 OPTIONS 请求返回 401 Unauthorized。

有什么办法可以让它在 FireFox 中也能正常工作吗?

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<!DOCTYPE HTML>
<html>
<head>
<title>IT Hit AJAX File Browser</title>

<!-- Always set width and height for html and body if you would like to set width and height for Ajax File Browser control to 100% -->
<style type="text/css">
    @import "AjaxFileBrowser/themes/ih_vista/include.css";
    html, body {margin: 0px; padding: 0px; width: 100%; height: 100%;}
</style>

<script src="AjaxFileBrowser/ITHitAJAXFileBrowser.js" type="text/javascript"></script>

<script type="text/javascript">
    function InitAjaxFileBrowser() {

        // Here we assume that your server is located on site root (http://server/) on the domain from which this page is loaded. 
        // If your WebDAV server is located on a different domain or on a different port the server must attach the Access-Control-Allow headers to server responses.
        var port = window.location.port == '' ? '' : ':' + window.location.port;
        var webDavServerPath = window.location.protocol + '//' + window.location.hostname + port;
        webDavServerPath = "http://localhost/WebDav";

        // Create the AJAX File Browser Settings object.
        var settings = {
            Id: 'AjaxFileBrowserContainer',     // (required) ID of the HTML control in which Ajax File Browser will be created
            Url: webDavServerPath,              // (required) the root folder to be displyed in Ajax File browser
            Style: 'height: 100%; width: 100%', // (required) always provide size of the control
            FileIconsPath: '/TestWebDavAjaxFileBrowser/AjaxFileBrowser/icons/',           // (required) path to the folder where file icons are located
            MsOfficeTemplatesPath: webDavServerPath + '/', // path to MS Office templates, always specify full path
            SelectedFolder: webDavServerPath,                        // folder to be selected, same as SetSelectedFolder call
            PluginsPath: '/TestWebDavAjaxFileBrowser/AjaxFileBrowser/plugins/'                                 // path to Java applet that opens documents directly from server
        };

        //Create control.
        var ajaxFileBrowser = new ITHit.WebDAV.Client.AjaxFileBrowser.Controller(settings);
    }
</script>
</head>
<body class="ih_vista" onload="InitAjaxFileBrowser();">
<div id="AjaxFileBrowserContainer" style="width: 100%; height: 100%"></div>
</body>
</html>

谢谢

更新1:

我在这里尝试了为 Safari 概述的解决方案:http ://www.webdavsystem.com/ajaxfilebrowser/programming/authentication_ssl ,但是它不起作用(Safari 和 FireFox 都没有)。系统提示我输入密码,但选项请求仍然未经授权。

我还在 .Net 项目属性 - Web 选项卡中启用了 NTLM 身份验证。仍然无效,OPTIONS 请求以未经授权的形式返回。

更新 2:

当我在 IIS 中运行客户端 .Net 应用程序而不是开发 Web 服务器(.Net 客户端 Web 应用程序和 webdav 服务器在 IIS 的 80 端口上本地运行)时,我让它在 FireFox 中工作。当我在 IIS 中运行它时,FireFox 可以工作,但 Safari 不能。Safari 一直提示我输入密码。我仍然很好奇在本地开发 Web 服务器中运行客户端应用程序时是否有解决方案。

4

1 回答 1

0

尝试在 web.config 中使用它:

<authorization>
  <!-- 
  To support Windows Shell (Miniredirector/Web Folders) on XP and Server 2003 as well as Firefox CORS requests, OPTIONS must be 
  processed without authentication. To enable authentication of OPTIONS request, remove "allow OPTIONS" from the list below.
  -->
  <allow users="*" verbs="OPTIONS"/>
  <deny users="?"/>
  <allow users="*"/>
</authorization>
于 2013-04-26T13:31:48.820 回答