簡體   English   中英

為什么我的 C# API 在服務器上工作正常,但當我嘗試從任何其他客戶端計算機調用它時總是失敗?

[英]Why does my C# API work fine on the server but it always fails when I try to call it from any other client machine?

我有一個 C# API,它將 Excel 工作表(文件路徑,工作表名稱)作為輸入,並將工作表內容作為 JSON 表單中的 output 返回。 當我嘗試在安裝了 windows 服務器 2016 的機器上測試它時,API 工作正常。 但是當我嘗試從表單發送文件路徑和工作表名稱時,它總是失敗。 這是我的 API 代碼...

public IHttpActionResult GetSheetData(string filePath, string sheetName)
        {
            try
            {
                var connectionString = $@"
                                        Provider=Microsoft.ACE.OLEDB.12.0;
                                        Data Source={filePath};
                                        Extended Properties=""Excel 12.0 Xml;HDR=YES""";
                using (var conn = new OleDbConnection(connectionString))
                {
                    conn.Open();
                    var cmd = conn.CreateCommand();
                    cmd.CommandText = $@"SELECT * FROM [{sheetName}$]";
                    using (var DRow = cmd.ExecuteReader())
                    {
                        var query = DRow.Cast<DbDataRecord>().Select(row => new
                        {
                            name = row[0],
                            age = row[1],
                            email = row[2]
                        });
                        var JSON = JsonConvert.SerializeObject(query);
                        return Ok(JSON);
                    }
                }
            }
            catch (Exception) { return Ok(HttpStatusCode.NotFound); };
        }

當我在服務器上測試 API 時,JSON 結果完美返回,但是當我嘗試使用這種形式測試它時.. 在此處輸入圖像描述 它總是返回 404(未找到)。

這是我的示例 excel 工作表數據。 在此處輸入圖像描述

有任何想法嗎?!

我找到了解決我的問題的方法,我想與您分享。

問題全都與 IIS 的訪問權限有關。當我嘗試訪問本地計算機或客戶端計算機上的文件時,IIS 應用程序池必須對該位置具有訪問權限。 所以,我使用了以下步驟。

  1. 瀏覽到包含要讀取的文件的文件夾
  2. 右鍵單擊文件夾和 select“屬性”
  3. 在“安全”選項卡下,select 編輯。
  4. 在'編輯' Window select '添加' -> '高級' -> 立即查找
  5. 在找到與 IIS -[IIS-IUsers]- 在我的例子中相關的用戶時查找結果名稱。
  6. 允許對文件夾的訪問控制 - 完全訪問 - 或 - 讀取和寫入 - 等等......

我希望這對你有幫助。 謝謝你們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM