0

我有一个用于 CSV 文件验证的简单 ASP.NET MVC 应用程序。用户输入文件的一些特征(文本框和一些复选框),然后浏览到他们想要上传的文件并点击提交。整个应用程序在我的本地计算机和内部 Web 服务器上都可以正常工作,但在放置在外部托管环境中时无法正常工作。以下是详细信息。

最初我机器上的文件内容被复制到服务器上。这意味着未启用 CSS 和 JS 的捆绑。应用程序页面会很好地呈现,并且提交也可以工作。但是,在提交文件后,应用程序根目录会更改。

我一直在使用视图中的以下代码位置检查应用程序根目录。

var applicationpath = '@Url.Content("~/")';

第一次渲染时,路径正确输出如下。

var applicationpath = '/folder1/folder2/folder3/appfolder/';

提交文件后,它变为。

var applicationpath = '/folder1/folder2/folder3/';

我已经与托管服务提供商核实过,他们已经在“appfolder”上设置了应用程序,而“folder3”只是 IIS 中的一个目录,并未设置为应用程序。

MVC 视图中的表单设置为通过以下方式发布。

@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "wizard" }))

由于路径发生了变化,这显然会弄乱任何应该自动映射到根的 Razor 方法@Url.Action@Html.ActionLink奇怪的是 CSS 和 JS 文件继续映射到渲染输出中。

毕竟,我决定尝试通过 Visual Studio 将应用程序发布到本地文件夹,然后将结果复制到托管服务提供商。这启用了 CSS 和 JS 文件的捆绑。现在,当我转到应用程序的根目录时,没有任何 CSS 或 JS 被下拉。我尝试获取捆绑的 JS 或 CSS 文件的路径并将其放入浏览器中,但出现 404 错误。渲染的输出如下所示:

<link href="/folder1/folder2/folder3/appfolder/Content/css?v=J7SZFaeCsOxTbb847HlSpnWlcb1lMDolldSj5wq-hdc1" rel="stylesheet"/>

不用说,我不知所措。我已经要求托管服务提供商告诉我他们安装了哪些 IIS 功能以及他们拥有哪些功能。见下文。

IIS 功能 1

IIS 功能 2

4

1 回答 1

0

第 3 方能够让我通过 RDP 访问服务器。我发现他们在 IIS 中使用 URL 重写,并且一些规则干扰了 MVC 应用程序。在他们禁用应用程序文件夹的规则后,一切正常。

于 2013-10-31T19:56:25.623 回答