通过iis在共享文件夹中搜索

时间:2019-06-13 13:24:28

标签: javascript c# json asp.net-mvc iis

我编写了一个Web应用程序,用户可以在共享文件夹中搜索文件,然后他们选择的文件将显示在浏览器中。

当我通过Visual Studio运行应用程序时,一切正常。

但是,如果我尝试通过IIS运行它,则执行共享文件夹中的JSON时会出现错误500(内部服务器错误)。

有权限限制吗?我可以通过使用我的凭据的VS运行它,而不是通过IIS运行它时是否运行它?也许共享文件夹必须对IIS_IUSR组具有读取访问权限?我说对了吗?

public JsonResult GetFiles(string MCodeID)
{
  if (MCodeID == null)
  {
    throw new ArgumentNullException(nameof(MCodeID));
  }

  List<Files> filelist = new List<Files>();
  //Searching Files in //192.168.1.191
  string path = @"\\192.168.1.191\Materials Project\";
  string searchPattern = MCodeID + "*";
  DirectoryInfo fi = new DirectoryInfo(path);
  if (fi.GetFiles(searchPattern, SearchOption.AllDirectories).Any())
  {
    foreach (var file in fi.GetFiles(searchPattern, SearchOption.AllDirectories))
    {
      var changeSlash = file.FullName.Replace('\\', '/');
      var filepath = changeSlash.Replace("//192.168.1.191/Materials Project", "");
      filelist.Add(new Files
      {
        FCodeID = filepath,
        FDescr = file.Name + " - " + Math.Round((Convert.ToDouble(file.Length) / (1024*1024)), 2) + " MB",
        FSize = Math.Round((Convert.ToDouble(file.Length) / (1024 * 1024)), 2)
      });
    }
    filelist.Insert(0, new Files { FCodeID = "0", FDescr = "--Select File--" });
    return Json(new SelectList(filelist, "FCodeID", "FDescr"));
  }
  else
  {
    filelist.Insert(0, new Files { FCodeID = "0", FDescr = "--No File--" });
    return Json(new SelectList(filelist, "FCodeID", "FDescr"));
  }
}
<script type="text/javascript">
  $(document).ready(function () {
    $("#MCodeID").on("change", function () {
      var url = '@Url.Content("~/")' + "Materials/GetFiles";
      var ddlsource = "#MCodeID";
      var items = "<option value='0'>--Select File--</option>";
      $("#FCodeID").html(items);
      var items = " ";
      $("#pdfviewer").hide();
      $(".loading-eclipse").show();
      $.getJSON(url, { MCodeID: $(ddlsource).val() }, function (data) {
        $("#FCodeID").empty();
        $.each(data, function (i, file) {
        if (file.value.includes("in Use"))
          items += "<option value='" + file.value + "'" + "style='background-color:orange;'>" + file.text + "</option>";
        else
          items += "<option value='" + file.value + "'>" + file.text;
      });
      $("#FCodeID").html(items);
      $(".loading-eclipse").hide();
      $("#FCodeID").show();
    });
  })
})
    </script>

通过IIS执行应用程序时,是否可以使用用户凭据?

1 个答案:

答案 0 :(得分:0)

我通过为用户提供对共享文件夹的完全访问权限而不仅仅是读取权限来解决上述错误。 感谢@Jalpa的帮助。