0

SharePoint 2010 にカスタム アプリケーション ページがあります。コード ビハインドに特定の C# コードを挿入するまでは、すべて正常に動作します。追加すると:

Document document = new Document();
document.LoadFromFile(@"C:\TestFolder\MYDOC.DOC");

document.SaveToFile(@"C:\Files\MYDOC.PDF", FileFormat.PDF);

このコードを追加すると、次のエラーが発生します。

File Not Found

このカスタム アプリケーション ページは、Spire.Doc と呼ばれるサード パーティの PDF dll を使用します。上記のコードが存在しない場合、その DLL はパッケージに追加され、DLL がパッケージに含まれていてもエラーは表示されません。エラーは、上記のコードがカスタム アプリケーション ページのコード ビハインドにある場合にのみ発生します。何か案は?私は完全に立ち往生しています。

ありがとう!

4

2 に答える 2

1

このエラーにつながる理由はたくさんあるかもしれません。

最初に、スタックトレースを使用してより拡張された診断情報を見つけることができるSharePointログを調べてみてください。これにより、エラーがこの特定のコードによって引き起こされていることを確認できます。

2番目:ドキュメントが実際にディスク上に存在することを確認してください。

そして第3に、SharePointは、そのアクセス許可と役割への参入障壁が高い複雑なシステムです。あなた(アプリケーションページを使用するアカウント)には、ディスク上のファイルを操作するための適切な権限が必要です。アプリケーションページのコンテキストを確認します。たとえば、アカウントが1つのサブサイトの管理者であり、ルートサイトの管理者ではない可能性がhttp://root/sites/subsiteあるなどのアプリケーションページに移動する場合です。とにかく、昇格された特権http://root/_layouts/apppageでコードを呼び出そうとすることができます。何かのようなもの

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    Document document = new Document();
    document.LoadFromFile(@"C:\TestFolder\MYDOC.DOC");
    document.SaveToFile(@"C:\Files\MYDOC.PDF", FileFormat.PDF);
});
于 2013-02-16T08:50:12.387 に答える
0

私の経験から、このfile not foundページはカスタム エラー ページが見つからないことを示しています。

Oleg Savelyev が指摘したように、ローカル ディスクへの読み取り/書き込みのアクセス許可に問題がある可能性があります。

おそらく、Memorystream を使用して PDF ドキュメントを表示または保存することをお勧めします。

HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline;filename=MYDOC.PDF");
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.WriteFile();
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Clear();

これを使用してhtmlをPDFに保存しました。.doc ファイルも使用できます。PDF へのドキュメントについては、http://www.aspose.com/.net/word-component.aspxを 参照してください。

これが役に立てば幸いです。

于 2013-11-05T12:10:23.250 に答える