【问题标题】:Publish web application with unsafe code使用不安全代码发布 Web 应用程序
【发布时间】:2015-09-27 07:28:13
【问题描述】:

我正在尝试发布一个需要在其中运行 vb 脚本的 Web 应用程序(使用 VS2012 Web)。

该脚本当前无法正确运行,可能是因为缺少权限。我目前正在尝试以用户身份运行它并提供一些凭据。我必须提供的密码必须在需要创建 char* 的 System.Security.SecureString 中。

当我在调试中运行我的应用程序时,一切正常且符合预期。但是到了将应用程序发布到服务器的时候,它会说:

1>C:\SVN\...\Default.aspx.cs(108,21,108,27): error CS0227: Unsafe code may only appear if compiling with /unsafe

我在项目属性中允许了不安全的代码,但我不知道为什么 VS 在调试时看到该属性而不是在发布时看到。

当我点击发布时,我在错误列表中看到了 CS0227 错误,但它只停留了 1 秒钟,然后就消失了……似乎那一秒钟足以使构建失败。

关于问题所在有什么想法吗?

这是我的代码:

Process proc = new Process();
ProcessStartInfo psi = new ProcessStartInfo("C:\\Windows\\System32\\cscript.exe", "\"" + scriptPath + "\" " + args);
psi.UseShellExecute = false;
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.CreateNoWindow = true;

psi.Domain = "MyDomain";
psi.UserName = "MyUsername";

System.Security.SecureString hashPwd;

unsafe
{
    // Instantiate a new secure string. 
    fixed (char* pChars = pwd)
    {
        hashPwd = new System.Security.SecureString(pChars, pwd.Length);
    }
}

psi.Password = hashPwd;


//Set the process' start info
proc.StartInfo = psi;

//We start the script.
proc.Start();

【问题讨论】:

    标签: c# asp.net publishing unsafe


    【解决方案1】:

    使用不安全的代码

    发布非常简单

    您的操作方法如下:

    【讨论】:

    • 感谢您的回答,但该标志只是告诉 C# 编译不安全代码...对我有用的解决方案只是删除不安全代码并放弃在 C# 中显式使用指针:)
    • 应选择所有配置和允许安全代码。
    【解决方案2】:

    好像你发布的时候忽略了unsafe的项目设置,所以你需要手动打开你的.CSPROJ文件并包含:

      <PropertyGroup>
        ...
        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
      </PropertyGroup>
    

    这为我解决了这个问题。

    谷歌搜索了这个问题,但找不到任何东西。检查了 *.targets 文件中的“不安全”,这导致我找到了“AllowUnsafeBlocks”标签。

    【讨论】:

      【解决方案3】:

      请将此代码添加到 Web.config 文件中并检查它是否适合您

      <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/unsafe" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </compilers>
      

      【讨论】:

      • 不,同样的问题...我必须将它包含在 标签中才能编译,但它仍然不会发布...奇怪的是出现编译器错误( CS0227) 约 1 秒后消失。
      • 我也有同样的问题。有什么办法可以预防吗?
      猜你喜欢
      • 1970-01-01
      • 2021-04-08
      • 2013-08-12
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      相关资源
      最近更新 更多