2017-03-22 13 views
1

私はXフレームオプションにc#を使用します。 これは私が次のように作成しています。c# - httpまたはhttpsなしでHttpWebRequestを作成します。

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(System.Uri.UnescapeDataString(url)); 
      string frameSupport = string.Empty; 
      using (WebResponse webResponse = request.GetResponse()) 
       frameSupport = webResponse.Headers["X-Frame-Options"]; 

ただし、httpまたはhttpsを使用せずにURLを渡すと、次の問題が発生します。

Unable to cast object of type 'System.Net.FileWebRequest' to type 'System.Net.HttpWebRequest'. 
+0

あると仮定は。適切な体系をパスしてください。 'WebRequest'は、ファイル、ftp、http、httpsのいずれの要求をしているのでしょうか?なぜ最初に無効なURLを使用していますか? –

+0

さらに、 'HttpWebRequest.Create'メソッドはありません。これは[WebRequest](https://msdn.microsoft.com/en-us/LIbrary/bw00b1dc(v = vs95).aspx)で定義されているファクトリメソッドです。コンパイラは警告を生成し、このような基本的な静的メソッドを呼び出そうとすると、Visual Studioでsquiggliesが追加されます。 –

+0

httpまたはhttpsを使用せずに「//google.com」のようなURLを入力することがあります。したがって、URLは適切なhttpまたはhttpsにリダイレクトされます。だから私たちはこのような入力をユーザーに許可しました。 "//google.com"を使用してWebリクエストを受け取ることができます –

答えて

2

あなたがHttpWebRequest.Createを使用する場合(HttpWebRequestWebRequestを拡張するため)、あなたが実際にWebRequest.Createを呼んでいます。
したがって、このメソッドはHTTPリクエストだけでなく、uriスキームに基づいてリクエストの実際のタイプを取得しようとします。
あなたはHTTP(S)方式を省略した場合、それはあなたが実行している要求の種類を知ることができないので、この場合には、それはそれは私が解決策は明白だと思うFileWebRequest

関連する問題