完整的信息是
应用程序尝试执行不允许的操作 安全政策。授予此应用程序所需的权限 请联系您的系统管理员或更改应用程序 配置文件中的信任级别。
我最近将一个MVC应用程序上传到Fasthosts托管站点。
应用程序在VS中本地运行正常但在服务器上运行不正确。
它最初提供了有关启用远程错误消息的消息,因此我将<customErrors mode="Off" />
添加到最初停止此操作的配置文件中。
然后我看到了上面的错误消息,所以在一些谷歌搜索后我将<trust level="Full" />
添加到<system.web>
,但我得到另一条消息说主机已禁用此功能。
问题是,这个应用并没有什么不寻常之处;它只是一个非常基本的MVC应用程序。它不会在当前文件夹结构之外的任何其他位置使用资源,因此不应该有任何信任问题。
这个问题也被夸大了,因为似乎存在某种服务器端缓存问题。
<system.web>
部分目前看起来像这样:
<system.web>
<customErrors mode="Off" />
<trust level="Medium" />
<compilation targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576" />
</system.web>
但仍然说我需要添加customErrors mode="Off"
才能看到错误消息。
在配置文件的各个位置添加各种行将最终返回到第一条错误消息,但不是出于我能看到的任何逻辑原因。
为完整起见,控制器操作如下所示:
public ActionResult Index(int vehicleId = 0)
{
ViewBag.VehicleId = vehicleId;
return View();
}
视图只是一个带有一些辅助方法的HTML,其中一个如下(其他只是不同的实体,否则相同的代码):
public static MvcHtmlString Manufacturers(string id = "manufacturers", string className = "", string style = "", string optionClass = "", string optionStyle = "", int selectedValue = 0, bool showSelect = false)
{
var result = new StringBuilder();
try
{
using (var context = new DB())
{
var selected = selectedValue == 0 ? " selected" : "";
result.Append($"<select id='{id}' class='{className}' style='{style}'>");
if (showSelect) result.Append($"<option{selected} value='0' disabled='disabled'>(Select)</option>");
foreach (var manufacturer in context.Manufacturers)
{
selected = manufacturer.ManufacturerId == selectedValue ? " selected" : "";
result.Append($"<option{selected} value='{manufacturer.ManufacturerId}' class='{optionClass}' style='{optionStyle}'>{manufacturer.Name}</option>");
}
result.Append("</select>");
}
}
catch (Exception ex)
{
result = new StringBuilder(ex.GetBaseException().Message);
}
return new MvcHtmlString(result.ToString());
}
我有一张Fasthosts的开放支持票,但我不相信它会很快回复:(
答案 0 :(得分:0)
在他们说它必须是我的代码之后,结果是主机服务器。
我找到了另一个提供商,上传了我的代码,第一次工作正常。
有时不是你,而是他们。