6

私はコントローラーに、クライアント用のパワーポイントデッキを自動生成するメソッドを作成しましたが、ファイルをディスクに保存する部分に固執している場合を除いて、すべて正常に機能します。

私はこの概念に不思議ではありません。そして、私がする必要があるのは、IIS_IUSRSにディレクトリへの書き込み権限と、すべての親ディレクトリへの読み取り権限を付与することだけだという「考え」です。私はIIS7を使用していますが、これは以前にIIS6でNETWORKSERVICEに同じアクセス許可を付与して行ったことがあります。

キックのためだけに、私はすべての人にディレクトリへの書き込み権限を与えましたが、それでも例外が発生し続けます:System.UnauthorizedAccessException:パス'C:...... \ Content\PPT'へのアクセスが拒否されました。(簡単にするために、パスの一部を削除しました)。

他に見落としているものはありますか?それが置かれているサーバーは私が最初にセットアップしたサーバーなので、何かを見落としているかもしれません。

これが私のコントローラーメソッドの簡略化です。

public ActionResult CreatePowerPoint()
    {
        string path = HttpContext.Server.MapPath("~/Content/PPT");

        Aspose.Slides.Presentation presentation = new Aspose.Slides.Presentation();
        CreatePresentation(presentation);

        presentation.Save(path, Aspose.Slides.Export.SaveFormat.Ppt);

        return View();
    }
}

present.Save()メソッドはパスと保存形式を取ります...他に何を試すべきかわかりません...コードに何か問題がありますか?パスを間違って作成していますか?Streamストリームをsaveメソッドに渡すこともできますが、それで問題が解決するかどうかはわかりません。

4

4 に答える 4

18

解決策を見つけました-IIS7を使用していて、アプリケーションプールを間違ったIDに設定していました。IIS 7では、アプリが実行されているアプリケーションプールのIDを変更するだけでブームになり、すべてが機能しました。私は自分のアイデンティティとしてネットワークサービスを使用しました。

また、Aspose Slidesを使用している場合は、ファイル名がパスに含まれていることも確認する必要がありました。

于 2011-03-14T18:09:23.987 に答える
3

アプリケーションプールIDは、「ネットワークサービス」に設定する必要があります(サービスの実行に使用できる有効なユーザーの例として)。ただし、IIS管理者認証\匿名認証を有効にし、匿名ユーザーIDを「アプリケーションプールID」に設定する必要もあります。これがなくても、ファイルのアップロード時にアクセス拒否の例外が発生していました。

于 2013-01-21T15:42:36.493 に答える
3

この問題が発生しましたが、NTFSFSでファイルが読み取り専用としてマークされていたことが原因でした。

私の場合、それnew FileStream(path, FileMode.Open)は失敗していたものであり、それを。に置き換えることで簡単に修正できましたFile.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read)

結論として、ファイルが読み取り可能であっても、を指定するだけでFileMode.OpenデフォルトでになっているようですFileAccess.ReadWrite

于 2016-03-23T18:24:45.847 に答える
0

同じ問題が発生していました。問題は、特定のフォルダーのプロパティの[読み取り専用]チェックボックスを削除しなかったことです。

于 2016-04-20T17:27:50.953 に答える