“该应用程序试图执行安全策略不允许的操作。”可能的信任问题?

时间:2017-05-31 13:15:49

标签: c# asp.net asp.net-mvc web-hosting cas

完整的信息是

  

应用程序尝试执行不允许的操作   安全政策。授予此应用程序所需的权限   请联系您的系统管理员或更改应用程序   配置文件中的信任级别。

我最近将一个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的开放支持票,但我不相信它会很快回复:(

1 个答案:

答案 0 :(得分:0)

在他们说它必须是我的代码之后,结果是主机服务器。

我找到了另一个提供商,上传了我的代码,第一次工作正常。

有时不是你,而是他们。