2009-07-07 8 views
6

イントラネットウェブアプリケーションを使用して作業しています。ネットワークMVCを作成し、ネットワーク上のフォルダへのリンクを作成する必要があります。例として、「C:\」へのリンクを作成したいとします。このURIはsite.DocsPathに格納されています。私はこれを行う最も簡単な方法は、ちょうどこのような定期的なリンクを、作成された考え出し:ネットワーク上のディレクトリにリンク

<a href="file:///<%= site.DocsPath %>">Documents</a> 

これはに解決:あなたがリンクをクリックしたとき、何もを起こりません、しかし

<a href="file:///C:\ruby">Documents</a> 

。これは基本的には普通のテキストをクリックするのと同じです。絶対に何もが発生します。リダイレクトはありません。私はFirefoxとIEの両方でこれを試みましたが、この同じ動作は両方で発生します。

最初はスラッシュかもしれないと思っていました。そこで、アドレスバーにfile:///C:\rubyを貼り付け、それが正しいかどうかを確認します。出来た。私はFirefoxとIEの両方でこれを試してみました。両方で動作します。

だから、「やあ、多分私のHTMLは何らかの理由で適切ではない」と思っています。だから私はそのような小さなhtmlページを作った:

<html> 
<head><title>Test Page</title></head> 
<body> 
    <a href="file:///C:\ruby">Documents</a> 
</body> 
</html> 

そして、それは働いた。私はリンクをクリックし、は実際にはのリンクに従います。これはFirefoxとIEの両方で機能します。

今私は混乱しています。 HTMLは(からASP.NET MVCまで、静的HTMLでは)の場合と全く同じです。それでも、は、静的なHTMLのケースでのみ動作します。


今、私はストローで引っ張っています。私はちょうどASP.NET MVCにストレートビューページに

<a href="file:///C:\ruby">Documents</a> 

を貼り付けてみてください。 Nopeは動作しません。

<a href="http://www.google.com">Supreme Overlord of the Internet</a> 

そして作品こと:

それから私は次のように、ビューページに静的にちょうどランダムウェブサイトを貼り付けてみてください。だから、ASP.NETが実際に手で生成されたリンクに従うことができることを確認しました。

今、何も残さずに、私は何か狂ったことをします。 私のような、存在しないどこかへのリンクを設定する:Firefoxはその銃にこだわって、それを従わない

<a href="file:///X:\this\doesnt\exist">I Hate ASP.NET MVC right now</a> 

しかし、,実際にはとなり、エラーページが表示されます。site.DocsPath = "X:\this\doesnt\exist"と私は置けば同じことが起こる:

<a href="file:///<%= site.DocsPath %>">Documents</a> 




をだから今、私は完全に混乱しています。私は知らない何が地獄が起こっている。明らかに、ASP.NET MVCは私を嫌っています。なぜなら、私は愛だけを示しているからです。

誰かが何が起こっているか考えているなら、私は非常に助けていただければ幸いです。ありがとう!


UPDATE:多くのテスト(ここSOの皆さんから多くの非常に役立つ回答やコメント)の後、私はちょうどフォルダに通常のリンクを作成するという結論に来ていますは動作しません。私は結局、上で作成した静的なHTMLページをWebサーバーに入れようとしましたが、それは動作しません。また、Ruby on Railsアプリケーションと小さなPHPアプリケーションを作成して試してみましたが、どちらでも動作しません。したがって、唯一の可能性は、それが実際にはブラウザのことであるということです。

SharePointサーバーに接続して、すべてのドキュメントを管理していると思います。コメントし、その質問に対してさまざまな回答をした皆様に感謝します。私は1つの答えだけを選ぶことができますが、皆のコメントと答えは実際に何が起こっているかについての明確な画像を提供しました。ありがとう!

答えて

3

これが答えよりもコメントの詳細ですが、私は」することができますコメント...

これはasp.net-mvcに関する質問ではありません。ブラウザの質問です。 HTMLがレンダリングされると、ハードコードされているかどうかは関係ありません.net、またはcgi。 asp.netを嫌ってはいけません...

あなたはあなたがそこに投稿をクロスすると誰かがあなたを助けることができるとは思われません。

あなたのテストを考慮すると、セキュリティ上の問題のように聞こえることは間違いありません。それは完璧な意味合いも持っています。

http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/HTML/Q_20405367.html

は少なくともIE(以下MSからの応答を参照)で、それは特定のセキュリティ設定です:

Plusは、いくつかのグーグルで、私はこれを見つけました。私はFFや他のものに似た何かを想像しています。

あなたが発生している問題は、Internet に 新しいセキュリティ機能です するために、6のService Pack 1探検あなたのローカルファイルへのアクセス からインターネット悪質なコードを防ぐため、 開発チームは、新しい セキュリティを開発機能を含み、 IE6 SP1に含まれています。この は通常の動作であることにご注意ください。

実際には、IE6 SP1には 「ゾーン昇格」を防止する新しい セキュリティコードチェックが含まれています。つまり、「インターネット」 ゾーンにある 文書には、「マイコンピュータ」ゾーンの 文書へのアクセスが許可されません(HREF、スクリプトなどを介して) が許可されます。 「信頼できる」または「マイコンピュータ」ゾーンの にあるドキュメントのみ、 の「マイコンピュータ」 ゾーンのドキュメントにアクセスできます。したがって

、あなたは「マイコンピュータ」ゾーンで 文書にアクセスする 信頼されていない文書を許可する場合は、 あなたは(これは明らかなセキュリティのために慎重に を行わなければならない 「信頼済みサイト」内のソースURLを追加することができます 理由)。 「ローカルイントラネット」ゾーンは も信頼されています。 - あなたはこのDWORDキーを作成し、この新しい 機能を無効にするには、それをゼロに設定することができ :

さらに、以下のレジストリ キーは、新しいセキュリティを無効に コードがその予防「ゾーンを 昇格」をチェックできます。また、 で有効にすると、いつでも1に変更できます。

ます。HKCU \ Software \ Microsoft \インターネット Explorerの\メイン\ Disable_Local_Machine_Navigate = 0 REG_DWORDは

" 上昇をゾーン" のセキュリティ修正を壊すので、 レジストリキーの上に使用することは推奨されません。

ジェームズ

+0

Lol、私は実際にはASP.NETを嫌うわけではありません...私はこれに少し不満を抱いていました私が投稿を書いたときの問題。私はRailsでこれをやってみたが、同じエラーが出たので、それはブラウザのことだと思う。しかし、それは静的なHTMLがローカルファイルにアクセスすることを可能にすることはまだ変わっています。とにかく、問題への実際の言及を含めてくれてありがとう。 – thebrokencube

+2

私はそれが "静的なHTML"を許可しないと思う...おそらく、ローカルファイルにローカルファイルにアクセスすることができます。あなたのウェブサーバーを通してそれを提供してください。 file://は、http:// - > file://ではなく、別のファイル(例えばcdからのローカルWebブラウジング)を指すことができます。 .......... 私はあなたがmvcを憎んではいないことに気付いています;)私はすべてのテストコードを "なぜf ****がこのように動作していないのですか?"、 "f **************** ck! "など –

+0

あなたはそうです。私はWebサーバー上でそれをテストし、どちらもうまくいきませんでした。私はこの機能を動作させるために別のツリーを樹立しなければならないと思う。助けてくれてありがとう! – thebrokencube

1

site.site.DocsPathをSystem.Uriにします。 DocsPathを作成するときに、あなたが行うときに、次の

DocsPath = new Uri("C:\\ruby"); 

を行う

<a href="<%= site.site.DocsPath %>">Documents</a> 

それが出力されます

<a href="file://C:\ruby">Documents</a> 

しかし、単にサイドノートとして、あなたはこのサービスを提供することができませんページから外部にドキュメントをウェブに配信する必要がある場合は、インターネットに対応したインターフェイスを設定する必要があります。ドキュメントとしての入力を受け取り、Response.Writesのドキュメントを何らかのハンドラを介してブラウザに戻すなどのページです。

+0

うーん...私はそれを試みたが、うまくいかなかった= /。それは私が試みたものと同じことをする。 しかし、確かに、私はこれがウェブ上で正しく動作しないことを知っています。私は元の投稿で何をしようとしているのかを明確にします。ありがとう! – thebrokencube

2

おそらくブラウザのセキュリティの制限があります。他のブラウザを試しましたか?

+0

さて、FirefoxとIEの両方で試しました。私は元の投稿でもう少し私の問題を明らかにするでしょう。ありがとう! – thebrokencube

+1

これは、セキュリティ機能として設計されていると思います。 –

+0

まあ、私は別のところで働くようになった。これは静的なhtmlページで動作し、直感的な方法でこれを行うだけで、以前のように作業することもできました。 – thebrokencube

1

私はまたあなたのやり方で働かないようにしました。 なぜあなたはこの方法を試してみませんか? File Upload Downloadここではダウンロードセクションを使用することができます。ダウンロード中は、ダウンロードするかどうか尋ねられます。

+1

実際には複雑ですが、非常にシンプルでもう1つのコードは、戻り値の型としてBinaryContentResultを使用しており、ActionResultから派生していますが、現在のバージョンのASP.NET MVCはFilePathResultを返します。それは非常に簡単です。 – San

+0

もし私が間違っていたら私を訂正してください。しかし、そのブログのポストで提示された解決策は、あなたのウェブサイトにそれらをリストすることができるようにそれらのファイルを実際に "検索"するようです。つまり、C:\のようなものをFirefoxのアドレスバーに入力しただけの場合は、同様に対処します(同様に、IEエクスプローラウィンドウを開くだけです)。 – thebrokencube

+1

はい、実際にファイルを取得します。ブラウザとは関係がありません。 最初に、すべてのファイル名をリンクとしてWebサイトに表示します。リンクをクリックすると、ファイルを保存または開くオプションが表示されます。 – San

1

おそらく、IEからフォルダへのリダイレクトに問題があります。おそらくfile:///を使用してローカルファイルにリダイレクトしてみてください - これは動作しますか?

<a href="file:///C:\ruby.html">Document</a> 

それは、おそらくあなたのURLの末尾にスラッシュを貼り付けてみない場合:

<a href="file:///C:\ruby\">Documents</a> 

やバックスラッシュを使用します。

<a href="file:///C:/ruby/">Documents</a> 
+0

普通のファイルにリンクしてみましたが、うまくいきません。私の質問で述べたように、静的なHTMLでWORKSというリンクを作成し、それをビューアにそのままコピーすると、うまくいきません。リンクは存在しますが、リンクをクリックすると何も起こりません。リダイレクト、エラーページなし、何もありません。 – thebrokencube

+1

はい、私はあなたが何を求めているのか理解していました。ファイルが存在し、そのファイルを含む同じコンピュータでこのリンクをクリックすると、リンクが機能します。また、リンク付きのページもローカルで開いている場合にのみ機能します。ウェブサーバーがサービスを提供している場合(ローカルかどうか)は動作しません。おそらく、そのサイトをあなたのブラウザで信頼できるものにすることによって、それを機能させることは可能かもしれませんが、私は100%確実に動作するとは限りません。 – synhershko

+0

確かに、私のブラウザでサイトをどのように信頼できるものにするか(あるいはそれがどう役立つか)はわかりません。この時点では、ローカルリンクをたどることができるようにウェブサーバ上に設定する必要があるという印象を受けました。 – thebrokencube

2

私は同様の問題に取り組んでおり、次の解決策を思い付きました。私はASP.NETを使用していますが、ASP.NET MVCは使用していません。しかし、私が知っているものと私が読んだものから、これはASP.NET MVCでも動作するはずです。まず、このようなあなたのリンクを作成します。

<a ID="A1" runat="server">Documents</a> 

を次に分離コードで(と仮定すると分離コードは、C#である)、をPage_Loadでクリックイベントを設定します。

A1.ServerClick += A1_ServerClick; 

そして、このようなクリックイベントがあります。

protected void A1_ServerClick(object sender, EventArgs e) 
{ 
System.Diagnostics.Process.Start("C:\\ruby"); 
} 

System.Diagnostics.Process.Startは単にディレクトリを開きます。ディレクトリが存在しないことを避けるために、Directory.Exists( "C:\ ruby​​")で存在を確認し、Directory.CreateDirectory( "C:\ ruby​​")が存在しない場合はディレクトリを作成します。

関連する問題