我正在使用下面的代码在 .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 服务器中运行客户端应用程序时是否有解决方案。