0

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

最初我的机器上的文件内容被复制到服务器。这意味着未启用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" })) 

因为路径的变化,这种明显弄乱任何@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 Features 1

IIS Features 2

+0

很少有问题:1)您控制的文件夹1,2,3文件夹还是您的主机提供商? 2)你的控制者在帖子上做了什么? – TSmith

+0

说实话,我没有上传这些文件,但是这是由公司的图形设计领域的人员完成的。话虽如此,我们可能能够控制一些文件夹结构,但不太可能。我知道我们无法访问IIS来修改这些类型的设置。 – amrinea

+0

控制器接受模型和HttpPostedFileBase。从那里它打开文件InputStream,加载它,然后做一堆检查。最后,这可能是你最感兴趣的部分,它在ViewBag中设置一个属性,然后'返回View(“Index”,du);'这将把它们带到它们开始的相同视图。地址栏变为“/ folder1/folder2/folder3/appfolder/Home/Upload”。 – amrinea

回答

0

第三方能够给我的服务器RDP访问。我发现他们在IIS中使用URL重写,并且一些规则干扰了MVC应用程序。在他们禁用了应用程序文件夹的规则后,所有事情都按照它应该的那样工作

相关问题