- IIS 7.5/Windows Server 2008 R2
- wielu witryn IIS przyłączone do tego samego adresu IP, używając nazw hostów.
- Ruch przychodzący do stron, które działają poprawnie.
- Przychodzące żądania sieci Web wykonane przez kod witryny zaplecza kończą się niepowodzeniem. Strona zdalna zwraca 404 (NotFound).
- Zweryfikowano przez śledzenie sieci, że ruch trafia do serwera usuwania.
- Te same żądania działają poprawnie, jeśli są wykonywane z witryny używającej dedykowanego adresu IP (tj. Nie są udostępniane w/żadnych innych witrynach).
Ktoś ma jakieś pomysły, jak zrobić tę pracę lub co może pójść nie tak?wychodzących żądań internetowych zawieść, gdy wykonane z witryn IIS przy użyciu udostępnionego adresu IP
ślad Network na hostingu:
Udane żądanie strony w/niewspólną adres IP:
No. Time Source Destination Protocol Info
6366 15:54:35.590463 192.168.1.76 173.194.77.121 HTTP GET /key/value/one/two HTTP/1.1
6369 15:54:35.599879 173.194.77.121 192.168.1.76 TCP http > 55407 [ACK] Seq=1 Ack=110 Win=344 Len=0
6370 15:54:35.621587 173.194.77.121 192.168.1.76 HTTP HTTP/1.1 200 OK (application/json)
6608 15:54:35.815774 192.168.1.76 173.194.77.121 TCP 55407 > http [ACK] Seq=110 Ack=357 Win=509 Len=0
Failed wniosek witryny przy użyciu udostępnionego adresu IP:
No. Time Source Destination Protocol Info
9720 15:54:39.244192 192.168.1.80 173.194.77.121 HTTP GET /key/value/one/two HTTP/1.1
9760 15:54:39.256958 173.194.77.121 192.168.1.80 TCP [TCP segment of a reassembled PDU]
9761 15:54:39.256962 173.194.77.121 192.168.1.80 HTTP HTTP/1.1 404 Not Found (text/html)
9762 15:54:39.257027 192.168.1.80 173.194.77.121 TCP 55438 > http [ACK] Seq=212 Ack=1676 Win=512 Len=0
Kod:
public static HttpWebRequest CreateWebRequest(string url, string method = "GET", string referer = null, string contentType = null, int timeout = 100000, string authentication = null, string bindToIpAddress = null, string host = null)
{
var request = (HttpWebRequest)WebRequest.Create(url);
if (!string.IsNullOrWhiteSpace(bindToIpAddress))
{
IPAddress bindIp;
if (!IPAddress.TryParse(bindToIpAddress, out bindIp))
{
throw new ArgumentException("bindToIpAddress");
}
request.ServicePoint.BindIPEndPointDelegate = ((sp, rep, rc) =>
{
return new IPEndPoint(bindIp, 0);
});
}
request.Accept = "*/*";
request.ContentType = contentType;
request.Referer = referer;
request.Method = method;
request.Timeout = timeout;
if (!string.IsNullOrWhiteSpace(host))
{
request.Host = host;
}
return request;
}
string GetData()
{
try
{
string result;
var request = CreateWebRequest("http://jsonplaceholder.typicode.com/posts/1",
"GET",
"somedomain.com",
timeout: (10 * 1000),
bindToIpAddress: "192.168.27.133" /*site IP*/);
request.Accept = "application/json";
using (var response = request.GetResponse())
{
using (var sr = new StreamReader(response.GetResponseStream()))
{
result = sr.ReadToEnd();
}
}
return result;
}
catch (Exception ex)
{
return null;
}
}
Głupie pytanie, ale czy dedykowane i współużytkowane adresy IP pochodzą od tego samego dostawcy internetu? Czy jest szansa, że Twój wspólny adres IP jest na czarnej liście? – Jacques
Tak. To samo ISP i środowisko hostingu, Rackspace, dla obu adresów IP. Na czarnej liście gdzie? Według usługi zewnętrznej? Zdarza się ze wszystkimi usługami stron trzecich, które wypróbowaliśmy. Nie sądzę, żeby wszyscy byli na czarnej liście na IP? –
Czy zrobiłeś IISReset po zmianie adresu IP z Dedicated na Shared? –